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

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

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

【问题讨论】:

    标签: ios cordova bounce


    【解决方案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 版本无关,因为它是本机代码。
    猜你喜欢
    • 2010-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-16
    • 1970-01-01
    • 2012-06-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多