我正在使用UIWebView来显示PDF。我需要跟踪一些UIScrollView事件,所以我像这样设置内置的UIScrollView:
for(UIScrollView *s in webView.subviews) {
s.delegate = self;
}
但问题是,当我这样做时,我失去了缩放缩放的能力(就像我之前所做的那样,因为设置了UIWebView的Scale Pages to Fit属性)。怎么会发生这种情况?我该怎么办才能修复它?我继续实现了UIScrollView的shouldZoom方法,但是当我将scrollView作为视图传回来进行放大时,它会从角落放大,而不是放在我手指的位置。
有人知道这个问题的解决方案吗?如何设置UIScrollView委托,并保持自然缩放功能?
谢谢!
答案 0 :(得分:1)
你正在搞乱一些UIWebView
内部。这感觉就像一个糟糕的黑客,但我认为你可以将所有UIScrollViewDelegate
方法转发回UIWebView,除了做你需要做的任何事情。
此外,UIWebView
有很多子视图。您应该仅为UIScrollView
检查并覆盖委托。
for (UIView *subview in webViews.subviews) {
if ([subview isKindOfClass:[UIScrollView class]]) {
subview.delegate = self;
}
}
答案 1 :(得分:0)
在您的代理中处理以下事件:
– viewForZoomingInScrollView:
– scrollViewWillBeginZooming:withView:
– scrollViewDidEndZooming:withView:atScale:
– scrollViewDidZoom:
或保存原始代表
origDelegate = s.delegate;
s.delegate = self;
转发电话,例如:
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView {
return [origDelegate viewForZoomingInScrollView:scrollView];
}