setZoomScale打破了在UIWebView中滚动的功能

时间:2014-05-19 01:54:31

标签: ios objective-c pdf uiwebview

我的一个应用程序有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何时完成加载可能会解决它。

0 个答案:

没有答案