[PhoneGap] 仅在主窗口中防止弹跳

Posted

技术标签:

【中文标题】[PhoneGap] 仅在主窗口中防止弹跳【英文标题】:[PhoneGap]preventing bounce ONLY in the main Window 【发布时间】:2014-03-10 07:48:27 【问题描述】:

我现在正在使用最新版本的 PhoneGap (3.4) 和 ios7.1 beta3,我发现 body(可能称为 UI View 元素)有一个不好的反弹属性,就像下图一样,我想禁用它。我试图在网站上搜索,我发现只有<preference name="DisallowOverscroll" value="false" /> 对我有用,但我发现此偏好使我的应用程序中的所有元素都禁用弹跳,我只想像下图一样禁用身体的弹跳,并在 div 元素中保持弹跳。

有什么办法可以解决这个问题吗?

【问题讨论】:

【参考方案1】:

您的 config.xml 文件中需要这两个首选项:

<preference name="webviewbounce" value="false" />
<preference name="DisallowOverscroll" value="true" />

然后,您可以在嵌套容器上启用 iOS 原生样式滚动:

.scrollingArea

  width: 100%;
  height: (some-fixed-height);
  overflow: hidden;
  overflow-y: scroll !important;
  -webkit-overflow-scrolling: touch;

您可能还会发现捕获和阻止某些您不希望用户可滚动的元素上的 touchmove' 事件很有用(取决于您的布局)。

【讨论】:

谢谢你的回答,我试过了,但 UI 似乎不够原生......也许我真的应该使用 iscroll.. 但无论如何谢谢 @DickyTsang 我已经修改了我的答案。您需要一些偏好。 嗯,使用 PhoneGap 3.5.0 和 iOS 7.1.2,我对此完全没有运气:/ 在 Cordova v5.7 ios 上工作,谢谢老兄 ;) config.xml 中的首选项设置在 Cordova 6.3.1 中似乎没有影响【参考方案2】:

我曾经有一种方法可以实现这一点。但它不是传统的,因为它处理的是本机编码。在 MainViewController 中有一个名为 webViewDidFinishLoad 的方法。包括这个 theWebView.scrollView.bounces=NO;

在那个方法里面。

- (void)webViewDidFinishLoad:(UIWebView*)theWebView

    // Black base color for background matches the native apps
    theWebView.backgroundColor = [UIColor blackColor];
    theWebView.scrollView.bounces= NO;
    return [super webViewDidFinishLoad:theWebView];

因为这是 ios 原生代码,所以它适用于任何 phonegap/cordova 发行版。

【讨论】:

.. @Mr.TA 如果这个解决方案不起作用,它会是什么解决方案? 它确实有效。它与 Cordova 版本无关,因为它是本机代码。

以上是关于[PhoneGap] 仅在主窗口中防止弹跳的主要内容,如果未能解决你的问题,请参考以下文章

禁用 Phonegap 中 DIV 的弹跳/橡皮筋效果

如何停止 UIWebView 在 phonegap 3.0 中垂直弹跳

仅在窗口调整大小时防止 div 重叠(带样式组件)

如何防止子进程在 Dock 中弹跳?

防止 iOS 11.3 溢出弹跳

位置:粘性 - 与javascript高度调整结合使用时滚动弹跳