0

我在 UITableViewCell 中嵌入了一个 UIWebView。

webview 内容是静态大小并且具有.scrollView.scrollEnabled = NO.

webview 中的 javascript 响应touchend事件。

一切正常,除了touchend当用户在表格视图中滚动时触发事件。

我试过canCancelContentTouches在表格视图上设置但没有成功。

有没有办法在滚动时停止 javascript 事件触发,或者在 javascript 中检测到这一点?

4

2 回答 2

0

您将要使用 UIScrollViewDelegate,它具有以下方法:

– scrollViewDidScroll:
– scrollViewWillBeginDragging:
– scrollViewWillEndDragging:withVelocity:targetContentOffset:
– scrollViewDidEndDragging:willDecelerate:
– scrollViewShouldScrollToTop:
– scrollViewDidScrollToTop:
– scrollViewWillBeginDecelerating:
– scrollViewDidEndDecelerating:

将 UITableViewController 委托的“scrollView.delegate”属性设置为“self”并在将 UIScrollViewDelegate 添加到表视图控制器后执行以下操作(您甚至可能不需要这样做,我不记得了,但它可能已经自动完成,您只需要公开这些方法)。

– scrollViewWillBeginDragging:

-> take your webview and "yourWebview setUserInteractionEnabled:NO"

– scrollViewWillEndDragging:withVelocity:targetContentOffset:

-> take your webview and "yourWebview setUserInteractionEnabled:YES"

这只是一种方法。另一个可能是使用 UIGestureRecognizerDelegate 并尝试使用“–gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:”

于 2013-04-24T03:08:50.897 回答
0

我找到的解决方案是在 javascript 中设置一个标志以指示touchend应该忽略该事件。touchend如果设置了标志,则处理程序将退出。

标志置入scrollViewWillBeginDragging:并清除scrollViewWillEndDragging:withVelocity:targetContentOffset:

设置和清除标志很简单[self.webView stringByEvaluatingJavaScriptFromString:@"ignoreTouchEvents = false;"]

于 2013-04-25T23:52:27.373 回答