Javascript触摸嵌入在UIScrollview中的UIWebview中的事件

时间:2011-02-18 14:25:06

标签: javascript uiwebview uiscrollview touch-event

当UIWebview嵌入在UIScrollview中时,我对UIWebview中的javascript和触摸事件有疑问。

UIScrollview在其中并排显示了许多视图(我将其简称为“子视图”)。每个子视图都是iPad屏幕的大小,左/右滑动应该在下一个/上一个子视图上移动。其中一个子视图是一个UIWebview,我在其中运行一个小的javascript应用程序,在某些情况下使用触摸事件和iScroll组件。

不幸的是,UIWebview嵌入在UIScrollview中的事实(苹果不推荐这种做法:http://developer.apple.com/library/ios/#documentation/uikit/reference/UIWebView_Class/Reference/Reference.html - 看到标有“重要”的方框)不在我手中。

我遇到的问题是关于在UIWebview子视图中滑动时的触摸事件。 如果我加载谷歌主页,例如滑动工作正常,下一个子视图进入视图。但是,当我加载其中一个JS应用程序时,滑动不起作用。

我假设UIWebview组件获取触摸事件并将其传递给其中的Javascript,以便它可以相应地做出响应。那么它是否也将它们传播回UIScrollview?或者是由Javascript代码来确保它不会对事件“stopPropagation”?关于如何协调这些事件的任何信息都将非常感激。

最后,我是一个javascript程序员而不是Objective-c程序员,虽然我理解它的基础知识,即我已经通过斯坦福iTunes iOS系列Objective-C视频中的一些,并编写了一些演示,但就是这样。

非常感谢你的时间。

1 个答案:

答案 0 :(得分:0)

失败的网页是否宽于UIWebView?如果您将scalesPageToFit属性设置为YES并禁用UIScrollView使用的内部UIWebView上的退回,则可以解决问题。

您可以使用以下功能禁用退回:

for (UIView *view in webView.subviews) {
    if (![[view class] isSubclassOfClass:[UIScrollView class]]) continue;
    ((UIScrollView *)view).bounces = NO;
    break;
}

不保证App Store的批准,因为我只将其用于未通过App Store分发的应用程序。