我正在使用ds.slideMenu
窗口小部件,它具有以下视图:
<Alloy>
<View id="containerview">
<View id="leftMenu">
<TableView id="leftTableView" />
</View>
<View id="movableview">
<View id="shadowview">
<View id="navview">
<Button id="leftButton" />
</View>
<View id="contentview" />
</View>
</View>
</View>
</Alloy>
以及显示webview的视图如下:
<Alloy>
<View class="container">
<WebView id="webview" url="myremoteurlhere" onLoad="construct"/>
</View>
</Alloy>
要介绍ds.slideMenu的代码所做的事情,以下是更改视图后会发生的事情:
function rowSelect(e) {
if (Alloy.Globals.currentView.id != e.row.customView) {
$.ds.contentview.remove(Alloy.Globals.currentView);
currentView = Alloy.createController(e.row.customView).getView();
currentView.touchEnabled = true;
Alloy.Globals.currentView = currentView;
$.ds.contentview.add(currentView);
}
}
movableview
有一个addEventListener
用于&#39; touchstart&#39;,&#39; touchend&#39;,&#39; touchmove&#39;并且肯定是得到事件而不是我的webview。现在,webview加载没有问题,但在iOS模拟器上触摸事件不起作用。点击加载的页面,没有任何反应。
请提供任何提示?
答案 0 :(得分:0)
答案是willHandleTouches webview
属性设置为false
。
从官方文档:
明确指定此Web视图是否处理触摸。 在iOS平台上,如果此Web视图或其任何父视图具有触摸侦听器,则Titanium组件将拦截所有触摸事件。这可以防止用户与本机Web视图组件进行交互。 将此标志设置为false可禁用默认行为。将此属性设置为false允许用户与本机Web视图进行交互,并仍然可以接受发送给其父项的任何触摸事件。当用户与Web视图本身交互时,不会生成任何触摸事件。 如果要从Web视图接收触摸事件,并且用户不需要直接与Web内容交互,请将此标志设置为true。
所以
<WebView id="<mywebviewid>" willHandleTouches=false url="<myurlhere>"/>
将按预期工作。