[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] 仅在主窗口中防止弹跳的主要内容,如果未能解决你的问题,请参考以下文章