Ответ 1
если вы используете Cordova 2.3.0 + найдите config.xml и добавьте эту строку:
<preference name="UIWebViewBounce" value="false" />
или в Кордова 2.6.0 +:
<preference name="DisallowOverscroll" value="true" />
Я пытаюсь разбить телефон, и я хочу, чтобы мое приложение не прокручивалось вверх и вниз, когда пользователь тянет их пальцем по экрану. Это мой код. Может ли кто-нибудь сказать мне, почему он все еще разрешает прокрутку?
<!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>
если вы используете Cordova 2.3.0 + найдите config.xml и добавьте эту строку:
<preference name="UIWebViewBounce" value="false" />
или в Кордова 2.6.0 +:
<preference name="DisallowOverscroll" value="true" />
Запустите этот код, когда страница загружена, чтобы отключить перетаскивание:
document.addEventListener('touchmove', function(e) { e.preventDefault(); }, false);
Вот пример с jQuery:
$(document).ready(function() {
document.addEventListener('touchmove', function(e) { e.preventDefault(); }, false);
});
если вы используете Cordova 2.6.0 +, найдите config.xml, просто добавьте/измените эту строку:
<preference name="DisallowOverscroll" value="true" />
в вашем файле конфигурации используйте
<preference name="webviewbounce" value="false" />
<preference name="DisallowOverscroll" value="true" />
Вы не сказали, что это родное приложение или веб-приложение.
Если это родное приложение, вы можете отключить прокрутку в веб-браузере
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;
}
}
В противном случае это ссылка на wiki для телефонной прошивки для предотвращения прокрутки. http://wiki.phonegap.com/w/page/16494815/Preventing-Scrolling-on-iPhone-Phonegap-Applications
Добавьте в файл config.xml следующую запись:
<preference name="DisallowOverscroll" value="true" />
Для меня это отлично работает, когда я использую селектор body с jquery. В противном случае я не смог открыть внешние ссылки с помощью Phonegap.
$('body').on('touchmove', function(evt) {
evt.preventDefault();
})
Изменено UIWebViewBounce для DisallowOverscroll в 2.6.0
В config.xml вашего проекта, в настройках для iOS установите DisallowOverscroll в значение true. По умолчанию он является ложным, что делает весь вид прокрутки вместе с внутренними элементами представления.
<preference name="DisallowOverscroll" value="true" />
Перейдите в native и добавьте эту строку в файл AppDelegate.m
self.viewController.webView.scrollView.scrollEnabled = false;
Отбросьте его в приложение приложения (BOOL): (UIApplication) doneFinishLaunchingWithOptions *.
теперь вам просто нужно положить <preference name="DisallowOverscroll" value="false" />
в <preference name="DisallowOverscroll" value="true" />
в файл config.xml.
Сначала вам нужно добавить слушателя событий в метод разгрузки тела.
просто поместите эту строку в метод перемещения касания.
он не будет прокручиваться document.addEventListener( "touchstart/TouchMove/touchend" ). Любой из этих 3.
function touchMove (event e) {
e.preventDefault;
}
Если UIWebViewBounce имеет значение NO в вашем файле .plist.
Затем с помощью простого css содержимое не будет прокручиваться. Попробуйте добавить этот стиль переполнения: скрытый в своем div, где вы хотите отключить прокрутку.
В config.xml вашего проекта, в настройках для iOS установите DisallowOverscroll в значение true.