2011-12-12 20 views
15

Chcę przejść do określenia załadowanego wiersza na mojej wtyczce. że próbowałjak ustawić pozycję przewijania na uiwebview

[Webview stringByEvaluatingJavaScriptFromString: @ "window.scrollTo (0,0, 100,0)"];

ale nie działa. Moja strona internetowa nadal zaczyna się od góry strony. Po prostu zastanawiam się, ponieważ załadowałem UIWebview wewnątrz UIView. Sprawdź mój poniższy kod na moim 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  
} 

i umieścić skrypt pozycjonowania przewijania na moim 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]; 
} 

w tym przypadku chcę umieścić moje UIWebView przejść do dołu strony po załadowaniu widoku. Ale to całkowicie nie działa, jakikolwiek pomysł, dlaczego? Czy robię to źle?

Odpowiedz

19

Spróbuj

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

kładę go na webViewDidFinishLoad w moim UIWebView i jej nie działa, zwój nadal wykazują górze strony. jakikolwiek inny pomysł? – dejoong

+2

@dejoong: czy jesteś pewien, że twoja strona jest przewijana? spróbuj ustawić go na czas wystrzeliwania po 1 sekundzie, aby sprawdzić, czy coś może przewinąć po 'webViewDidFinishLoad'. – Dani

+0

Tatz Dziwne Dani, kiedy ja odpalam metodę (zawiera webview.scrollView.contentOffset = CGPointMake (0, 100);) co 1 sekundę działa, ale jeśli wywołać metodę bezpośrednio jej nie działa. wiesz dlaczego? – dejoong

6

Upewnij się ustawić kontroler widoku, gdzie miał swój pogląd web być UIWebViewDelegate, i zadeklarować to w @interface pliku nagłówka (.h).

[yourWebView setDelegate:self]; 



Następnie w metodzie webViewDidFinishLoad:, wstawić ten kod:

[yourWebView.scrollView scrollRectToVisible:CGRectMake(0, yourWebView.bounds.size.height + 100, 1, 1) animated:NO];   
Powiązane problemy