0

我正在使用 UIWebView 来显示 PDF。我需要跟踪一些 UIScrollView 事件,所以我将内置的 UIScrollView 设置为:

for(UIScrollView *s in webView.subviews) {

    s.delegate = self;

}

但问题是,当我这样做时,我失去了捏缩放的能力(就像我以前一样,因为设置了 UIWebView 的 Scale Pages to Fit 属性)。怎么会这样?我能做些什么来修复它?我继续并实现了 UIScrollView shouldZoom 方法,但是当我将 scrollView 作为要放大的视图传回时,它从角落缩放,而不是我手指所在的位置。

有人知道这个问题的解决方案吗?我怎样才能设置 UIScrollView 委托,并且仍然保留自然缩放能力?

谢谢!

4

2 回答 2

1

你在搞乱一些UIWebView内部结构。这感觉像是一个糟糕的 hack,但我认为UIScrollViewDelegate除了做你需要做的任何事情之外,你还可以将所有方法转发回 UIWebView。

此外,UIWebView有许多子视图。您应该只为UIScrollView.

for (UIView *subview in webViews.subviews) {
    if ([subview isKindOfClass:[UIScrollView class]]) {
        subview.delegate = self;
    }
}
于 2011-07-10T22:06:49.577 回答
0

在您的委托中处理以下事件:

– viewForZoomingInScrollView:
– scrollViewWillBeginZooming:withView:
– scrollViewDidEndZooming:withView:atScale:
– scrollViewDidZoom:

或保存原始委托

origDelegate = s.delegate;
s.delegate = self;

并转发呼叫,例如:

- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView {
    return [origDelegate viewForZoomingInScrollView:scrollView]; 
} 
于 2011-07-10T22:07:19.597 回答