2011-12-12 14 views
15

Quiero ir a especificar la línea en mi uiwebview cargado. I trataroncómo establecer la posición de desplazamiento en uiwebview

[web View stringByEvaluatingJavaScriptFromString: @ "window.scrollTo (0.0, 100,0)"];

pero no funciona. Mi vista web aún comienza con la parte superior de la página. Me pregunto porque cargué el UIWebview dentro de UIView. Comprobar el código de abajo en mi UIView:

- (void)loadView { 
    webview = [[WebViewDetail alloc]initWithFrame:[UIScreen mainScreen].applicationFrame];  //initialize a mainView is a UIWebVIew 
    webview.managedObjectContext = self.managedObjectContext; 
    webview.kitab = self.kitab; 
    webview.currentPasal = self.pasal; 
    self.title = [NSString stringWithFormat:@"%@ %d", self.kitab, webview.currentPasal]; 
    self.view=webview; //make the mainView as the view of this controller  
} 

y puse el guión posicionamiento de desplazamiento en mi UIWebView:

- (void)webViewDidFinishLoad:(UIWebView *)webView 
{ 
    int height = [[webView stringByEvaluatingJavaScriptFromString:@"document.body.offsetHeight;"] intValue]; 

    NSString* javascript = [NSString stringWithFormat:@"window.scrollBy(0, %d);", height]; 
    [self stringByEvaluatingJavaScriptFromString:javascript]; 
} 

en este caso quiero poner mi UIWebView ir a la parte inferior de la página cuando la vista está cargada Pero no funciona, ¿por qué? ¿Lo estoy haciendo mal?

Respuesta

19

Trate

webview.scrollView.contentOffset = CGPointMake(0, 100); 
+0

lo puse en webViewDidFinishLoad en mi UIWebView y no su trabajo, el rollo siguen mostrando la parte superior de la página. alguna otra idea? – dejoong

+2

@dejoong: ¿estás seguro de que tu página es desplazable? intente configurarlo en un temporizador que se active después de 1 segundo, para ver si algo se puede desplazar después de 'webViewDidFinishLoad'. – Dani

+0

tatz extraño Dani, cuando disparo el método (contiene webview.scrollView.contentOffset = CGPointMake (0, 100);) cada 1sec está funcionando, pero si llamo directamente al método no funciona. ¿sabes por qué? – dejoong

6

asegúrese de configurar el controlador de vista donde usted tiene su vista web para ser un UIWebViewDelegate, y declarar esto en el @interface del archivo de cabecera (.h).

[yourWebView setDelegate:self]; 



Luego, en el método webViewDidFinishLoad:, inserte el código:

[yourWebView.scrollView scrollRectToVisible:CGRectMake(0, yourWebView.bounds.size.height + 100, 1, 1) animated:NO];   
Cuestiones relacionadas