이라는 UIViewController
클래스가 있는데이 클래스는 UIWebView
입니다.iOS UIWebViewDelegates가 호출되지 않았습니다.
@implementation WebScreenViewController
@synthesize urlString;
- (void)viewDidLoad
{
[super viewDidLoad];
self.webView.delegate = self;
// Do any additional setup after loading the view.
[self gotoUrl:self.urlString];
//[self gotoUrl:@"http://www.google.com"];
}
#pragma mark - UIWebView Delegates
-(BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
NSURL* url = [request URL];
NSString* urlStr = url.absoluteString;
NSLog(@"shouldStartLoadWithRequest. URLStr = %@", urlStr);
return YES;
}
-(void)webViewDidStartLoad:(UIWebView *)webView
{
NSLog(@"webViewDidStartLoad");
}
-(void)webViewDidFinishLoad:(UIWebView *)webView
{
NSString* html = [webView stringByEvaluatingJavaScriptFromString:@"document.body"];
NSLog(@"webViewDidFinishLoad: HTML string = %@", html);
}
-(void) webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error
{
NSLog(@"didFailLoadWithError. ERROR: %@", error);
}
#pragma mark - Member Methods
-(void)gotoUrl:(NSString*)urlStr
{
NSLog(@"Calling website %@ in UIWebView...", urlStr);
NSURL* url = [NSURL URLWithString:urlStr];
NSURLRequest *urlRequest = [NSURLRequest requestWithURL:url];
[self.webView loadRequest:urlRequest];
}
@end
위의 코드가 작동 잘 내 테스트 장치 중 하나를 제외하고는 다른 작동하지 않았다 다음은 클래스 구현 파일입니다. 그것은 최신 아이폰 OS 8.1.2로 제 아이팟 터치에서 작동했습니다. 하지만 iOS 버전 7.0이 설치된 iPad3에서는 작동하지 않습니다. 내 iPad3에서 실행하면 gotoUrl:
메서드가 호출되고 "Calling website % @ in UIWebView ..."라는 로그가 표시됩니다. 그리고 그게 다야. 대리인으로부터 더 이상 로그를받지 못합니다. 인터넷 연결을 확인하기 위해 Safari를 동일한 장치에서 사용해 보았습니다.
같은 첫 번째 라인을 교체 할 수 있습니다 [gotoUrl :]에 null이 있습니까? 대리자를 설정하기 전에 먼저 – Shai
이 초기화되었는지 여부를 확인하십시오. 그것이 null의 경우, 최초로 초기화 해, 그 delegate를 설정합니다. –
글쎄, 내가 말했듯이, 위의 코드는 내 iPod에서 사용할 때 잘 작동한다. 의미, 모든 NSLogs가 올바르게 인쇄됩니다. 문제는 내 iPad에서 실행하면 작동하지 않는다는 것입니다. 그래서 다른 OS가있는 다른 장치에서 작동하지 않는다는 점이 무엇이 잘못되었는지 알지 못합니다. –