C'è un modo per disabilitare lo zoom quando la pagina Scale per adattarsi è ON ??UIWebView disabilita lo zoom quando scalePageToFit è ATTIVATO
risposta
questo funziona per me:
UIScrollView *scrollView = [webView.subviews objectAtIndex:0];
scrollView.delegate = self;//self must be UIScrollViewDelegate
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView {
return nil;
}
UPDATE: Per iOS 5 o superiore ottenere ScrollView come questo:
webview.scrollView.delegate = self;
C'è una proprietà chiamata scrollView
in UIWebView
. Attraverso di esso puoi definire questo. Per essere più precisi si dovrebbe assomigliare a questa:
myWebView.scrollView.minimumZoomScale = 1.0;
myWebView.scrollView.maximumZoomScale = 1.0;
sbagliato lo zoom è ancora lì, anche se si imposta i livelli di zoom a 1.0 –
Questo in realtà funziona se messo in '- (void) webViewDidFinishLoad: (UIWebView *) webView' della funzione delegate della webview –
Spiacente, questo non funziona per me, anche se inserito in webViewDidFinishLoad. –
Dal Apple Documentation:
scalesPageToFit
Un valore booleano che determina se la pagina web in scala per adattarsi alla vista e la l'utente può cambiare la scala.
@property (nonatomic) BOOL scalesPageToFit
Discussione
Se SI, la pagina web viene adattato e l'utente può ingrandire e ridurre fuori. Se NO, lo zoom dell'utente è disabilitato. Il valore predefinito è no.
Quindi, se si desidera modificare tale comportamento, sarà probabilmente necessario sottoclasse UIWebView.
Edit: Implementare metodo delegato
- (void)webViewDidFinishLoad:(UIWebView *)webView
per la visualizzazione web e in essa aggiunge folowing codice:
[webView stringByEvaluatingJavaScriptFromString: @"$('body').bind('touchmove', function(event) { event.preventDefault() });"];
Il problema è questo disattivare anche la pergamena, perché disattiva la mossa di toccare. Se si desidera mantenere il rotolo è necessario scrivere uno script Java che sovrascriverà il meta tag viewport con:
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no">
non ha aiutato, è ancora zoomabile – Jim
Sembra che tu stia scrivendo, sto cercando una soluzione e io modificherò –
Questo ha funzionato per me su iOS 5. –
Invece di usare
UIScrollView *scrollView = [webView.subviews objectAtIndex:0];
scrollView.delegate = self;//self must be UIScrollViewDelegate
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView {
return nil;
}
È possibile utilizzare questo:
webview.scrollView.delegate = self;
-(UIView*)viewForZoomingInScrollView:(UIScrollView*)scrollView {
return nil;
}
Seconda opzione è migliore e pieno-prova. La prima logica potrebbe fallire nei futuri SDK.
quindi funziona su di me:
NSString *fullURL = @"http://google.com";
NSURL *url = [NSURL URLWithString:fullURL];
NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];
_webView.scrollView.scrollEnabled = TRUE;
_webView.contentMode = UIViewContentModeScaleAspectFit;
_webView.scalesPageToFit = FALSE;
[_webView loadRequest:requestObj];
Ottima soluzione, funziona perfettamente e usando un'istruzione if nel metodo, puoi scegliere di restituire 'nil' o inoltrare il messaggio a' super', nel qual caso lo zoom viene riattivato (a seconda del contenuto che stai visualizzando). –
A partire da iOS 5 è possibile utilizzare 'webView.scrollView.delegate = self;'. – Dev
Grazie mille mi ha davvero aiutato molto! –