如何避免在 iPhone 应用程序上拉下屏幕

Posted

技术标签:

【中文标题】如何避免在 iPhone 应用程序上拉下屏幕【英文标题】:How to avoid pulling down of screen on iPhone app 【发布时间】:2014-03-27 09:02:48 【问题描述】:

我正在为 iPhone 开发一个应用程序,但如果我用手指拖动,我的应用程序屏幕可以上下拉动。我希望页眉和页脚保持固定,并且可以向上和向下拉动页面内容。而且还想换屏后下拉和上拉应该是灰色而不是黑色。我正在使用带有cordova(phonegap)的xcode5。请帮忙。 谢谢你。

【问题讨论】:

【参考方案1】:

如果您使用的是 Cordova 2.3.0+,请找到 config.xml 并添加以下行:

  <preference name="UIWebViewBounce" value="false" />

或在 Cordova 2.6.0+ 中:

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

【讨论】:

谢谢@milind,我会尽力让你知道。知道如何将屏幕下方的黑色更改为屏幕中的灰色吗? @Sushant:这将防止拉屏幕。如果我能得到一些关于颜色变化的信息,我会告诉你的。 @Sushant:很高兴它有帮助:)【参考方案2】:

如果你使用 phonegap 3 + 然后添加

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

到 config.xml

【讨论】:

成功了!!!!谢谢@Arjun。工作!你现在能告诉我修复灰色背景的标题和可移动内屏吗 使用css溢出属性,【参考方案3】:

在您的应用程序 config.xml 文件中完成下一行: - DisallowOverscroll ->> true - 删除 html(Cordoba 文件)中的任何元标记,例如 height=device-height。 对于背景黑色,看看这是否有帮助:phonegap ios7 select dropdown gets black background

【讨论】:

【参考方案4】:

在你的代码中试试这个

<div data-role="footer" data-position="fixed" data-tap-toggle="false">

希望这会有所帮助

【讨论】:

【参考方案5】:

尝试以下脚本,您的问题将得到解决。

// Function to disable "pull-to-refresh" effect present in some webviews.
// Especially Crosswalk 12 and above (Chromium 41+) runtimes.
window.addEventListener('load', function() 
    var lastTouchY = 0;
    var maybePreventPullToRefresh = false;

    // Pull-to-refresh will only trigger if the scroll begins when the
    // document's Y offset is zero.

    var touchstartHandler = function(e) 
        if (e.touches.length != 1) 
            return;
        
        lastTouchY = e.touches[0].clientY;
        // maybePreventPullToRefresh = (preventPullToRefreshCheckbox.checked) && (window.pageYOffset == 0) ;

        maybePreventPullToRefresh = (window.pageYOffset === 0);
        //document.getElementById('txtLog').textContent = "maybePreventPullToRefresh: " + maybePreventPullToRefresh;
    ;

    // To suppress pull-to-refresh it is sufficient to preventDefault the
    // first overscrolling touchmove.

    var touchmoveHandler = function(e) 
        var touchY = e.touches[0].clientY;
        var touchYDelta = touchY - lastTouchY;
        lastTouchY = touchY;

        if (maybePreventPullToRefresh) 
            maybePreventPullToRefresh = false;
            //if (touchYDelta > 0) 
            e.preventDefault();
            //document.getElementById('txtLog').textContent = "TouchY: " + touchYDelta;
            // console.log("pull-to-refresh event detected") ;
            return;
            //
        

        // if (preventScrollCheckbox.checked) 
        //     e.preventDefault() ;
        //     return ;
        // 

        // if (preventOverscrollGlowCheckbox.checked) 
        //     if (window.pageYOffset == 0 && touchYDelta > 0) 
        //         e.preventDefault() ;
        //         return ;
        //     
        // 
    ;



    document.addEventListener('touchstart', touchstartHandler, false);

    document.addEventListener('touchmove', touchmoveHandler, false);

);

【讨论】:

以上是关于如何避免在 iPhone 应用程序上拉下屏幕的主要内容,如果未能解决你的问题,请参考以下文章

如何让 iOS 8 小部件出现在锁定屏幕上

当应用程序从后台处于活动状态时,如何避免在本机反应中安装组件?

如何在本机中处理不同的屏幕尺寸?

多任务应用程序切换器屏幕截图对于横向 iPhone 应用程序是颠倒的

在 iOS 应用中拍照后是不是可以避免“使用”/“重拍”屏幕?

如何在iphone中录制屏幕[关闭]