我正在尝试手机间隙,我希望我的应用程序在用户将手指拖过屏幕时不会向上和向下滚动。这是我的代码。谁能告诉我它为什么还允许滚动?
<!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>
答案 0 :(得分:87)
如果你正在使用 Cordova 2.3.0 +找到config.xml并添加这一行:
<preference name="UIWebViewBounce" value="false" />
或 Cordova 2.6.0 +:
<preference name="DisallowOverscroll" value="true" />
答案 1 :(得分:34)
加载页面时运行此代码以禁用拖动:
document.addEventListener('touchmove', function(e) { e.preventDefault(); }, false);
这是jQuery的一个例子:
$(document).ready(function() {
document.addEventListener('touchmove', function(e) { e.preventDefault(); }, false);
});
答案 2 :(得分:17)
在配置文件中使用
<preference name="webviewbounce" value="false" />
<preference name="DisallowOverscroll" value="true" />
答案 3 :(得分:10)
如果您使用 Cordova 2.6.0 + 查找config.xml,只需添加/修改此行:
<preference name="DisallowOverscroll" value="true" />
答案 4 :(得分:5)
您没有说这是本机应用还是网络应用。
如果这是本机应用,您可以关闭webview上的滚动
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 wiki上的一个链接,用于防止滚动。 http://wiki.phonegap.com/w/page/16494815/Preventing-Scrolling-on-iPhone-Phonegap-Applications
答案 5 :(得分:5)
将以下条目添加到config.xml文件:
<preference name="DisallowOverscroll" value="true" />
答案 6 :(得分:3)
在项目的config.xml中,在iOS的首选项下将DisallowOverscroll设置为true。默认情况下,它为false,使整个视图与视图的内部元素一起滚动。
<preference name="DisallowOverscroll" value="true" />
答案 7 :(得分:2)
对我而言,当我使用身体选择器和jquery时,它的工作是完美的。否则我无法使用Phonegap打开外部链接。
$('body').on('touchmove', function(evt) {
evt.preventDefault();
})
答案 8 :(得分:2)
在2.6.0
中将UIWebViewBounce更改为DisallowOverscroll答案 9 :(得分:2)
去原生并将此行添加到AppDelegate.m文件
{{1}}
将其放入 - (BOOL)应用程序:( UIApplication )应用程序didFinishLaunchingWithOptions * 部分。
答案 10 :(得分:1)
现在您只需将<preference name="DisallowOverscroll" value="false" />
放入config.xml文件中的<preference name="DisallowOverscroll" value="true" />
。
答案 11 :(得分:0)
首先,您需要在body卸载方法中添加事件侦听器。
只需将此行放入触摸移动方法中即可。
它不会滚动 document.addEventListener( “touchstart / touchmove / touchend”)。这些中的任何一个。
function touchMove (event e) {
e.preventDefault;
}
答案 12 :(得分:0)
如果.plist文件中的UIWebViewBounce为NO。
然后使用简单的css会使内容无法滚动。 尝试在要禁用滚动的div中添加此样式 overflow:hidden 。
答案 13 :(得分:0)
在项目的config.xml中,在iOS的首选项下将DisallowOverscroll设置为true。