我尝试过以下方法:
html, body, div, p, a, table, img
{
-webkit-user-select: none !important;
user-select: none !important;
-webkit-user-callout: none !important;
-webkit-touch-callout: none !important;
}
这适用于占据整个屏幕的uiwebview,但对于我没有的uiwebview(上面的adbannerview),它将uiwebview上方的放大镜推到了adbannerview上。
是否有人提出任何想法都不会导致UILongPressGestureRecognizers
在uiwebview的子视图中停用answer?
答案 0 :(得分:6)
我设法通过确保在每次加载页面后禁用手势来获得建议的评论。
所以,在你的webview委托中:
func webViewDidFinishLoad(webView: UIWebView) {
disableLongPressGesturesForView(webView)
}
然后,您的函数可以查找webview的每个子视图(以及它的子视图子项),并禁用任何长按手势。
func disableLongPressGesturesForView(view: UIView) {
for subview in view.subviews {
if let gestures = subview.gestureRecognizers as [UIGestureRecognizer]! {
for gesture in gestures {
if gesture is UILongPressGestureRecognizer {
gesture.enabled = false
}
}
}
disableLongPressGesturesForView(subview)
}
}
答案 1 :(得分:2)
我通过迭代webview中的子视图并找到哪个具有UILongPressGestureRegonizer然后禁用它来禁用放大镜
以下是摘录:
- (void)disableWebViewLongPressGestures:(UIWebView *)webview {
for(id subView in webview.subviews) {
if([subView isKindOfClass:[UIScrollView class]]) {
UIScrollView *scrollView = (UIScrollView *)subView;
for(id ssView in scrollView.subviews) {
if([NSStringFromClass([ssView class]) isEqualToString:@"UIWebBrowserView"]) {
for(UIGestureRecognizer *gs in [ssView gestureRecognizers]) {
if ([gs isKindOfClass:[UILongPressGestureRecognizer class]])
{
gs.enabled = NO;
}
}
}
}
}
}
}