2012-03-13 73 views
4

我目前正在开发使用PhoneGap的1.5和jQuery Mobile的iOS应用程序禁用页面。jQuery Mobile的 - 启用滚动拖动

我明白,我们可以使用下面的JavaScript禁用页面拖动:

function preventBehavior(e) 
{ 
    e.preventDefault(); 
}; 

document.addEventListener("touchmove", preventBehavior, false); 

然而,内容滚动不工作,如果上述被启用。

有什么办法我阻止用户拖动页面还允许滚动?

我一直在使用iScroll尝试。为此,我需要手动在每页上的pageinit事件下执行

scrollbar.refresh(); 

。不幸的是,我确实有很多页面需要滚动。 =(

是否有,我可以用它来实现滚动,而无需使用第三方插件任何其他方法?

回答

5

一下添加到HTML头

<script type="text/javascript"> 
    touchMove = function(event) { 
     event.preventDefault(); 
    } 
</script> 

然后在设置

ontouchmove="touchMove(event)" 

最外层的DIV为要禁用拖动每一个页面,例如:

<div id="mypage" ontouchmove="touchMove(event)"> 

对于没有的页面,可能会进行拖动ontouchmove =“touchMove(event)”

此解决方案要求您不包含函数preventBehavior()的phonegap模板代码。删除或注释掉:

//function preventBehavior(e) 
//{ 
// e.preventDefault(); 
//}; 
//document.addEventListener("touchmove", preventBehavior, false); 

更详细的信息在这里:http://phonegap.pbworks.com/w/page/16494815/Preventing-Scrolling-on-iPhone-Phonegap-Applications

+0

看起来像一个很好的解决方案,但有人真的得到这个工作?对我来说没有运气。 – kaleazy 2012-07-26 09:47:16

1

我使用jQuery Mobile和以下(DOM的准备执行)工作对我来说:

$('body').on('touchmove', function(e) { 
    e.preventDefault(); 
}); 

注返回错误或调用e.stopPropagation()将导致身体的孩子也不响应'touchmove'事件。也许你正在做的其中停止事件冒泡的事件处理程序之一。

2
$(document).delegate('.ui-page', 'touchmove', false); 

这是更可能的工作,将取决于你想要的触摸被禁用。