UIWebView.hidden и JavaScript - PullRequest
       2

UIWebView.hidden и JavaScript

0 голосов
/ 05 октября 2011
  1. Я скрываю веб-просмотр в webViewDidStartLoad:
  2. Сделать запрос
  3. Сделать строкуByEvaluatingJavaScriptFromString в webViewDidFinishLoad:
  4. Показать веб-просмотр

Но когдаЯ запускаю приложение, я вижу, как работает JS.Где моя ошибка?

Кроме того, я пишу NSLog (@ "% @", self.webView) до и после self.webView.hidden = FALSE;

<UIWebView: 0x5e37720; frame = (0 44; 768 955); hidden = YES; autoresize = W+H; layer = <CALayer: 0x5e37780>>
<UIWebView: 0x5e37720; frame = (0 44; 768 955); autoresize = W+H; layer = <CALayer: 0x5e37780>>

FirstViewController.m:

- (void)webViewDidStartLoad:(UIWebView *)webView{
self.webView.hidden = TRUE;
}

- (void)webViewDidFinishLoad: (UIWebView *) webView {
    [self useJScript:self.webView];
NSLog(@"Show %@", self.webView);//result above^^^
self.webView.hidden = FALSE;
NSLog(@"Showned %@", self.webView);
}

- (void)useJScript:(UIWebView *) webView{
NSLog(@"Применяю jscript для %@",webView);
NSString *path = [[NSBundle mainBundle] pathForResource:@"jsmain" ofType:@"html"];
NSFileHandle *readHandle = [NSFileHandle fileHandleForReadingAtPath:path];
NSString *htmlString = [[NSString alloc] initWithData: 
                        [readHandle readDataToEndOfFile] encoding:NSUTF8StringEncoding];
[webView stringByEvaluatingJavaScriptFromString:htmlString];
}

Ответы [ 2 ]

0 голосов
/ 06 октября 2011

Это не просто, но работает:

Мы можем показать webView после метода webViewDidFinishLoad и занять 0,2 секунды (это не важно для пользователя), чтобы завершить JScript в нем.

Просто добавьте[self performSelector:@selector(hidden_false) withObject:nil afterDelay:0.2 ]; до webViewDidFinishLoad метод.А

-(void) hidden_false{
self.webView.hidden = FALSE;
[UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
}
0 голосов
/ 05 октября 2011

Ваша ошибка, вероятно, в stringByEvaluatingJavaScriptFromString.Если вы не покажете нам код, мы не сможем вам помочь.

...