2015-09-21 12 views
15

ho provato la seguente:Come disattivare completamente la lente d'ingrandimento per 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; 
} 

Questo funziona per il mio UIWebView che occupa l'intero schermo, ma per il mio UIWebView che non lo fa (ADBannerView sopra), spinge la lente d'ingrandimento sopra l'uiwebview oltre l'adbannerview.

Qualcuno ha qualche idea che non implichi la disabilitazione di UILongPressGestureRecognizers nelle subviste di uiwebview come suggerito in questo answer?

+0

@rmaddy, si prega di leggere la mia domanda. Non è un duplicato di quella domanda. Ho provato la loro soluzione e ho persino messo la loro soluzione nella mia domanda e ho spiegato cosa fa. – mark

+0

Grazie @ rmaddy. – mark

+1

Lo stesso problema qui, qualsiasi soluzione plz? –

risposta

6

Sono riuscito a ottenere commenti suggeriti lavorando assicurando che i gesti siano disabilitati dopo ogni caricamento della pagina.

Così, nel vostro WebView delegato:

func webViewDidFinishLoad(webView: UIWebView) { 
    disableLongPressGesturesForView(webView) 
} 

Allora la vostra funzione può cercare ogni visualizzazione secondaria della WebView (ed è figli visualizzazione secondaria), e disattivare i gesti premere a lungo.

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) 
    } 
} 
+0

Incredibile !!! Thx man:) bel codice !!! @rossbeale –

+0

Puoi guardare la mia domanda qui plz @rossbeale? : http://stackoverflow.com/questions/32761868/how-can-we-disable-the-effect-of-enabled-bold-text-from-settings-in-the-iphone/32762352?noredirect=1#comment53389075_32762352 –

2

ho disabilitato la lente di ingrandimento iterando i subviews dal WebView e trovare che ha UILongPressGestureRegonizer poi disabilitarlo

Ecco il frammento:

- (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; 
         } 
        } 
       } 
      } 
     } 
    } 
} 
Problemi correlati