2013-04-29 3 views
48

Я использую самую последнюю версию Phonegap на IOS (ipad), и я не могу отключить вертикальный опрос/отскок на всем приложении. Я не против этого во внутренних элементах, но это выглядит довольно странно, когда вы прокручиваете вверх или вниз, и все приложение отскакивает вверх и вниз.Остановить overscroll/bounce в Phonegap IOS

Я пробовал установить UIWebViewBounce на no в .plist, однако, похоже, ничего не сделал.

Цените помощь :)

ответ

161

Вы должны изменить свойство в файле config.xml. Просто установите следующее предпочтение true

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

Поскольку Кордова 2.6, UIWebViewBounce было изменено на DisallowOverscroll , http://docs.phonegap.com/ru/3.1.0/guide_platforms_ios_upgrading.md.html#Upgrading%20iOS – Reborn

+0

Где я могу найти этот файл config.xml в приложении iphone? –

+1

Я нашел несколько различных файлов config.xml. В главном каталоге есть один, и я меняю его. Но затем, когда я создаю приложение для iOS, тогда создаются еще два файла config.xml, один в каталоге платформ/ios и один в платформах/iOS/www. На платформе/ios, похоже, гораздо больше материала, чем тот, который я редактировал в своем основном каталоге (включая предпочтение отказа от перепроса). –

16

Принятый ответ не работает для меня, я должен был установить UIWebViewBounce в false:

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

Я использую версию кордовы 3.4, поэтому она не работает. Но это сделало эту работу: http: // stackoverflow.com/вопросы/22294677/phonegappreventing-bounce-only-in-the-main-window –

+2

Это не работает в Кордове 6.1.1. –

+0

'UIWebViewBounce' был переименован в' DisallowOverscroll', и значение было инвертировано, но с CLI 6.5.0 оно не работает для приложений Windows Universal (WP8). – andreszs

1

Используйте это:

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

Это не работает в Кордове 6.1.1. –

2

это это то, что работало для моего приложения, работающего с телефонной связью 3.0: , добавьте следующую строку в config.xml

<preference name="webviewbounce" value="false"/> 
+1

Это не работает. –

13

теперь PhoneGap 3.0 выше использования версии ниже Синтекс в config.xml файле и он будет работает 100%

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

Это не работает в Кордове 6.1.1. –

+0

Этот ответ отлично работал для меня на Кордове 6.1.1. @ У Mr.TA должна быть другая проблема. – raider33

+0

Это все еще не работает в WP8 Windows Universal приложениях с CLI 6.5.0. – andreszs

6

Если вы добавляете <preference name="DisallowOverscroll" value="true"/> в config.xml без удачи, вы можете изменить неправильный файл. Вместо этого выполните поиск по всему каталогу телефонной книги для «DisallowOverscroll». Вы должны найти несколько экземпляров. Измените их на true.

Cheers.

+0

Я не нашел других экземпляров этого, кроме строк в config.xml, которые я сам добавил. –

2

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

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

Это не работает. –

2

В файле config.xml вашего проекта, в соответствии с настройками для iOS set DisallowOverscroll для true.

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

Это не работает. –

3

Существует способ, которым я использовал для достижения этого. но это не условно, потому что он имеет дело с внутренним кодированием. В MainViewController существует метод webViewDidFinishLoad. Включите это
theWebView.scrollView.bounces = НЕТ;

внутри это способ.

- (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, это будет работать в любом распределении телефонной связью/кордорой.

+0

Это не работает в Кордове 6.1.1. –

+0

Вы уже проверили этот код? С Кордовой вообще ничего не происходит. –

+0

Да. Ты прав. Это объективный код. Я использовал это, потому что каждый раз, когда изменилась кордова, мне пришлось модифицировать код или настройки. Таким образом, я не обязан. –

1

Это сработало для меня. Попробуйте добавить этот код в config.xml файле вашего PhoneGap приложение:

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

+2

Это не работает в Кордове 6.1.1. –

+1

Вы написали этот комментарий в каждом ответе –

+0

Итак, ЧТО РАБОТАЕТ ??? –

4

Если ничего не работает, попробуйте удалить -webkit-overflow-scrolling: touch из вашего CSS ... если бы вы его!

+0

Проблема в том, что также отключает прокрутку скорости. –

+0

Да, я пытался решить эту проблему некоторое время, и я в основном пришел к выводу, что невозможно отключить перепрограммирование, не отключая прокрутку скорости, не изменяя скорость в javascript. –

2

Спасибо за ответ. Но если у вас проблема в Windows Phone, вот решение. Просто зайдите в MainPage.xaml.cs файл и заменить ниже функции ..

public MainPage() 
    { 
     InitializeComponent(); 
     this.CordovaView.DisableBouncyScrolling = true; 
     this.CordovaView.Loaded += CordovaView_Loaded; 
    } 

Its работает для меня :)

+0

Спасибо, супер полезно! –

1

Лучше изменить два элемента в config.xml следующим образом:

<preference name="DisallowOverscroll" value="true"/> 
<preference name="UIWebViewBounce" value="false" /> 
+2

Это не работает в Кордове 6.1.1. –

4

Используйте этот способ: -

function disallowOverscroll(){ 
    $(document).on('touchmove',function(e){ 
    e.preventDefault(); 
    }); 
    $('body').on('touchstart','.scrollable',function(e) { 
    if (e.currentTarget.scrollTop === 0) { 
     e.currentTarget.scrollTop = 1; 
    } else if (e.currentTarget.scrollHeight 
       === e.currentTarget.scrollTop 
        + e.currentTarget.offsetHeight) { 
     e.currentTarget.scrollTop -= 1; 
    } 
    }); 
    $('body').on('touchmove','.scrollable',function(e) { 
    e.stopPropagation(); 
    }); 
} 
disallowOverscroll(); 

Для получения более подробной информации или советы & Трюки, пожалуйста, прочтите эту статью click

+0

Это не работает в Кордове 6.1.1. –

2

У меня была аналогичная проблема, но я не мог исправить ее всеми решениями, которые я нашел до сих пор (например, редактирование config.xml).

Но в конце концов, просто редактируя CSS свойство тела затем он фиксируется:

html,body 
{ 
    overflow: auto; 
    height:100%; 
} 
+0

он изменил привязку события прокрутки к «document.body», а не «окно». –

2

Try This One Если вы ионная структура пользователя Abc.html файл внутри контента.

<ion-content has-bouncing="false">

+1

эта работа для меня – Valix85

0

Открыть Xcode -> найти и нажмите на config.xml слева меню-> и изменить значение DisallowOverscroll ложное истинному Или использовать этот код, заменив предыдущий.

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

Для Кордова 7 и iPhone 7 + IOS, 11.0.3, изменяя config.xml корневого каталога и добавить это работало красиво:

<platform name="ios"> 
    <preference name="DisallowOverscroll" value="true" /> 
    <preference name="UIWebViewBounce" value="false" /> 
    ... (other stuff) ... 
</platform>