Вопрос прокрутки приложения iPhone HTML5 - PullRequest
10 голосов
/ 27 июня 2010

Я не знаю, возможно ли это вообще или что Google может найти, но как вы можете добавить:

<meta name="viewport" content="user-scalable=no, width=device-width, initial-scale=1.0, maximum-scale=1.0"/>

И это будет сделано, чтобы вы не могли прокручивать из стороны в сторонуТолько вверх и вниз.Есть ли способ сделать так, чтобы он не вызывал эффекта прокрутки, когда вы доходите до конца, а продолжал прокручивать, а затем снова всплывал?Как и в приложениях Cocoa, я заметил, что «перезапись» иногда имеет один и тот же цвет фона, поэтому он не похож на Safari или просто не делает этого вообще?

Ответы [ 4 ]

14 голосов
/ 27 июня 2010

То, что вы называете оверроллом, называется отскоком.К сожалению, в UIWebView нет документированного способа отключения отказов.Вы можете посмотреть на UIScrollView для методов, связанных с отскоком.UIWebView владеет UIScrollView, но не предоставляет его.

Чтобы предотвратить горизонтальную прокрутку, вам просто нужно убедиться, что ваша веб-страница вписывается в область просмотра.Одной из распространенных причин несоответствия является элемент шириной 100%, когда поле для тела не равно нулю.

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

function stopScrolling( touchEvent ) { touchEvent.preventDefault(); }
document.addEventListener( 'touchstart' , stopScrolling , false );
document.addEventListener( 'touchmove' , stopScrolling , false );

Редактировать:

UIWebView в основном закрытый со стороны Objective-C, но довольно доступный со стороны JavaScript.Вы можете добавить javascript , если не контролируете загружаемый контент.

5 голосов
/ 12 сентября 2012

Если вы используете Cordova 1.7+, просто откройте файл Cordova.plist и установите ключ UIWebViewBounce на NO

В Cordova 2.3+ теперь это config.xml, и вам нужноустановить его на false.

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

@ JSW189

если вы удалите эту строку:

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

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

1 голос
/ 06 февраля 2013

Решение для предыдущих версий Cordova находится в следующем сообщении: http://tripleshotsoftware.blogspot.ch/2012/09/stop-uiwebview-bounce-for-cordova-based.html

изменить файл MainViewController.m (или файл AppDelegate.m в более старых версиях Cordova / Callback / PhoneGap).

Найдите webViewDidFinishLoad и в этом методе добавьте следующую строку:

[[theWebView.subviews objectAtIndex:0] setBounces:NO];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...