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あなたはいくつかの内部をいじっています。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 に答える