我在UITableViewCell中嵌入了一个UIWebView。
webview内容属静态大小,并且.scrollView.scrollEnabled = NO
。
webview中的javascript会响应touchend
个事件。
除了用户在表格视图中滚动时触发touchend
事件,一切正常。
我尝试在表格视图上设置canCancelContentTouches
但没有成功。
有没有办法在滚动时停止javascript事件触发,或者在javascript中检测到这个?
答案 0 :(得分: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:”
答案 1 :(得分:0)
我找到的解决方案是在javascript中设置一个标志,以指示应忽略touchend
事件。如果设置了标志,则touchend
处理程序将失效。
该标记在scrollViewWillBeginDragging:
中设置,并在scrollViewWillEndDragging:withVelocity:targetContentOffset:
设置和清除标志就像[self.webView stringByEvaluatingJavaScriptFromString:@"ignoreTouchEvents = false;"]