Как полностью отключить увеличительное стекло для UIWebView iOS9
Я пробовал следующее:
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
на subviews uiwebview, как это предложено в этом ?
Ответы
Ответ 1
Мне удалось получить предложенные комментарии, работая, чтобы гарантировать, что жесты отключены после каждой загрузки страницы.
Итак, у вашего делегата webview:
func webViewDidFinishLoad(webView: UIWebView) {
disableLongPressGesturesForView(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)
}
}
Ответ 2
Я отключил увеличительное стекло, выполнив итерацию подзонов с веб-просмотра и выбрав, где 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;
}
}
}
}
}
}
}