Как использовать внедренный JavaScript для прокрутки UIWebView к точке - PullRequest
7 голосов
/ 30 июля 2011

Я читал об этом весь день и просто не могу решить проблему.Я пытаюсь загрузить веб-страницу и после ее завершения автоматически прокручивает ее до заранее определенной точки.Я читал учебные пособия, такие как этот http://iphoneincubator.com/blog/windows-views/how-to-inject-javascript-functions-into-a-uiwebview и до сих пор не повезло.

Вот мой .m, где проблема возникает.Я в отчаянии, пожалуйста, помогите!Кроме того, это говорит мне, что мой webViewDidFinishLoad перезаписывает переменную экземпляра, но это не должно быть проблемой, я считаю

- (void)viewDidLoad {
    [super viewDidLoad];

    NSString *urlAddress = @"http://www.twitter.com/richrines";
    NSURL *url = [NSURL URLWithString:urlAddress];
    NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];
    [webView loadRequest:requestObj];

    // Do any additional setup after loading the view from its nib.
}


- (void)webViewDidFinishLoad:(UIWebView *)webView {
     [webView stringByEvaluatingJavaScriptFromString:@"var script = document.createElement('script');"  
     "script.type = 'text/javascript';"  
     "script.text = \"function myFunction() { "  
     "window.scrollTo(100,100)"
     "}\";"  
     "document.getElementsByTagName('head')[0].appendChild(script);"];  

     [webView stringByEvaluatingJavaScriptFromString:@"myFunction();"];
}

Ответы [ 3 ]

3 голосов
/ 30 июля 2011

Почему вы делаете это таким сложным образом?Это должно быть все, что вам нужно:

[webView stringByEvaluatingJavaScriptFromString:@"window.scrollTo(100,100)"];
0 голосов
/ 11 мая 2014

Это прекрасно работает для меня, но не включает JavaScript:

Убедитесь, что вы установили контроллер представления, в котором у вас есть веб-представление, на UIWebViewDelegate, и объявите это в @interface файла заголовка (.h).

[yourWebView setDelegate:self];


Затем в методе webViewDidFinishLoad: вставьте этот код:

[yourWebView.scrollView scrollRectToVisible:CGRectMake(0, yourWebView.bounds.size.height + 100, 1, 1) animated:NO];           
0 голосов
/ 16 декабря 2011

Не могли бы вы изменить смещение в свойстве scrollView webView?

[webView.scrollView setContentOffset:CGPointMake(100, 100)];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...