#javascript #ios #uiwebview #uiwebviewdelegate
#javascript #iOS #uiwebview #uiwebviewdelegate
Вопрос:
- Я скрываю webview в webViewDidStartLoad:
- Сделать запрос
- Сделайте stringByEvaluatingJavaScriptFromString в webViewDidFinishLoad:
- Показать webview
Но когда я запускаю приложение, я вижу, как работает 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];
}
Ответ №1:
Ваша ошибка, вероятно, в stringByEvaluatingJavaScriptFromString
. Если вы не покажете нам какой-либо код, мы не сможем вам помочь.
Ответ №2:
Это не просто, но это работает:
Мы можем показать 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;
}