我是iOS的新手,当我在UIWebView
中打开PDF时,我会在控制台中收到这样的警告。
void SendDelegateMessage(NSInvocation *): delegate (webView:didFirstLayoutInFrame:) failed to return after waiting 10 seconds. main run loop mode: kCFRunLoopDefaultMode
2017-07-11 16:55:38.304119+0530 appname[1334:540218] libMobileGestalt MobileGestalt.c:550: no access to InverseDeviceID (see <rdar://problem/11744455>)
以下是从NSBundle在Webview上打开PDF文件的代码
visionweb.delegate=self;
NSURL *targetURL = [[NSBundle mainBundle] URLForResource:@"a0" withExtension:@"pdf"];
NSURLRequest *request = [NSURLRequest requestWithURL:targetURL];
[visionweb loadRequest:request];
[self.view addSubview:visionweb];
这里的visionweb是我的UIWebview对象。
我尝试使用相同的代码打开其他PDF文件,并能够打开它们。但是当我尝试打开此特定文件时,它会在控制台上显示上述消息。
两种委托方法
- (void)webViewDidStartLoad:(UIWebView *)webView;
和- (void)webViewDidFinishLoad:(UIWebView *)webView;
在我尝试打开另一个PDF文件时被调用。
但是当我尝试打开那个特定的PDf文件时,它只调用第一个委托方法,即只调用-(void)webViewDidStartLoad:(UIWebView *)webView;
,而不是另一个。
我无法理解它背后的问题。我在互联网上搜索过它,发现有很多人面临同样的问题,但是他们的解决方案并没有帮助我。我正在使用Xcode 6.2。
这是一个解决方案。我使用下面的代码,它对我有用。
termsWebView.delegate = self;
NSString *path = [[NSBundle mainBundle]
pathForResource:@"Terms_of_Use_20170523" ofType:@"docx"];
NSURL *url = [NSURL fileURLWithPath:path];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
[termsWebView loadRequest:request];