我的一个应用程序有UIWebView
,用于从用户的设备加载特定的pdf。加载webView后,我想设置缩放比例和contentOffset
。但是,如果pdf需要一段时间才能加载,用户就无法再滚动了 - 他们可以看到整个pdf并可以放大/缩小,但它只会缩放到左上角而你无法滚动所有。 (如果放大比缩放比例更大,则可以滚动。)
(为了完整性)我在viewDidAppear
:
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES);
NSString *documentsPath = [paths objectAtIndex:0];
NSString *path = [documentsPath stringByAppendingPathComponent:@"filename.pdf"];
NSURL *url = [NSURL fileURLWithPath:path];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
[self.webView loadRequest:request];
主要代码:
- (void)webViewDidFinishLoad:(UIWebView *)webView {
if (!loadFailedBool) {
[self performSelector:@selector(zoomIntoWebView) withObject:nil afterDelay:0.0];
}
}
- (void)zoomIntoWebView {
[webView.scrollView setZoomScale:5.0 animated:NO];
webView.scrollView .contentOffset = CGPointMake(600, 420);
}
我删除了任何不必要的代码,但正如您所看到的,它在延迟0.0后运行缩放功能。在这种情况下,每次都会发生上述错误。如果我把它设置为类似0.3的代码,那么代码工作正常,大约90%的时间。
作为一个临时修复,我已将延迟设置为0.6,但它远非理想,特别是如果用户在较旧的设备上。如果每次都发生此错误,则此应用程序的此功能将无法使用。如果有人有任何建议或类似问题,找到解决方案会很棒。知道pdf何时完成加载可能会解决它。