Как предотвратить вертикальную прокрутку приложения, работающего в телефонном промежутке? - PullRequest
55 голосов
/ 01 июня 2011

Я испытываю разрыв телефона и хочу, чтобы мое приложение не прокручивало вверх и вниз, когда пользователь проводит пальцем по экрану. Это мой код Может кто-нибудь сказать мне, почему он все еще позволяет прокручивать?

   <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
  <head>
    <meta name = "viewport" content = "user-scalable=no,width=device-width" />
    <!--<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no;" />-->

    <meta http-equiv="Content-type" content="text/html; charset=utf-8">

    <!-- iPad/iPhone specific css below, add after your main css >
    <link rel="stylesheet" media="only screen and (max-device-width: 1024px)" href="ipad.css" type="text/css" />        
    <link rel="stylesheet" media="only screen and (max-device-width: 480px)" href="iphone.css" type="text/css" />       
    -->
    <!-- If you application is targeting iOS BEFORE 4.0 you MUST put json2.js from http://www.JSON.org/json2.js into your www directory and include it here -->
    <script type="text/javascript" charset="utf-8" src="phonegap.0.9.5.1.min.js"></script>
    <script type="text/javascript" charset="utf-8">


    // If you want to prevent dragging, uncomment this section
    /*
    function preventBehavior(e) 
    { 
      e.preventDefault(); 
    };
    document.addEventListener("touchmove", preventBehavior, false);
    */

    /* If you are supporting your own protocol, the var invokeString will contain any arguments to the app launch.
    see http://iosdevelopertips.com/cocoa/launching-your-own-application-via-a-custom-url-scheme.html
    for more details -jm */
    /*
    function handleOpenURL(url)
    {
        // TODO: do something with the url passed in.
    }
    */

    function onBodyLoad()
    {       
        document.addEventListener("deviceready",onDeviceReady,false);
    }

    /* When this function is called, PhoneGap has been initialized and is ready to roll */
    /* If you are supporting your own protocol, the var invokeString will contain any arguments to the app launch.
    see http://iosdevelopertips.com/cocoa/launching-your-own-application-via-a-custom-url-scheme.html
    for more details -jm */
    function onDeviceReady()
    {
        // do your thing!
        navigator.notification.alert("PhoneGap is working")
    }
    touchMove = function(event) {
        // Prevent scrolling on this element
        event.preventDefault();
    }

</script>
<style>
#container {
width:100%;
height:100%;
}
</style>

</head>

    <body onload="onBodyLoad()">
        <div id="container" ontouchmove="touchMove(event);">
        </div>
    </body>
</html>

Ответы [ 14 ]

87 голосов
/ 14 января 2013

, если вы используете Cordova 2.3.0 +, найдите config.xml и добавьте эту строку:

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

или Cordova 2.6.0 +:

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

35 голосов
/ 09 июня 2011

Запустите этот код при загрузке страницы, чтобы отключить перетаскивание:

document.addEventListener('touchmove', function(e) { e.preventDefault(); }, false);

Вот пример с jQuery:

$(document).ready(function() {
    document.addEventListener('touchmove', function(e) { e.preventDefault(); }, false);
});
17 голосов
/ 10 июля 2015

в вашем конфигурационном файле используйте

<preference name="webviewbounce" value="false" />
<preference name="DisallowOverscroll" value="true" />
10 голосов
/ 23 апреля 2013

если вы используете Cordova 2.6.0 + find config.xml, просто добавьте / измените эту строку:

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

5 голосов
/ 17 августа 2013

Добавьте следующую запись в файл config.xml:

<preference name="DisallowOverscroll" value="true" />
5 голосов
/ 01 июня 2011

Вы не сказали, является ли это нативное приложение или веб-приложение.

Если это нативное приложение, вы можете отключить прокрутку в веб-просмотре

UIScrollView* scroll;  //
for(UIView* theWebSubView in self.webView.subviews){  // where self.webView is the webview you want to stop scrolling.
    if([theWebSubView isKindOfClass:[UIScrollView class] ]){
        scroll = (UIScrollView*) theWebSubView;
        scroll.scrollEnabled = false;
        scroll.bounces = false;
    }
}

в противном случае здесьэто ссылка на вики PhoneGap для предотвращения прокрутки.http://wiki.phonegap.com/w/page/16494815/Preventing-Scrolling-on-iPhone-Phonegap-Applications

3 голосов
/ 02 мая 2014

В config.xml вашего проекта в настройках iOS установите для DisallowOverscroll значение true. По умолчанию это false, что заставляет весь вид прокручиваться вместе с внутренними элементами вида.

<preference name="DisallowOverscroll" value="true" />
2 голосов
/ 29 апреля 2015

Перейдите в исходное состояние и добавьте эту строку в файл AppDelegate.m

self.viewController.webView.scrollView.scrollEnabled = false;

Перетащите его в приложение - (BOOL): приложение (UIApplication ) didFinishLaunchingWithOptions * секция.

2 голосов
/ 13 апреля 2013

Изменено UIWebViewBounce на DisallowOverscroll в 2.6.0

2 голосов
/ 14 ноября 2012

Для меня это прекрасно, когда я использую селектор тела с jquery.В противном случае я не смог открыть внешние ссылки с помощью Phonegap.

$('body').on('touchmove', function(evt) {
    evt.preventDefault(); 
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...