私はiOS 6用に開発しています.UIWebViewを上にスクロールすると後退するUIWebViewの上部にある一種のツールバーに取り組んでいます。
私の考えでは、UIWebView 内にある UIScrollView のデリゲートを設定して、UIViewController にメッセージを送信できます。これにより、上部のツールバーの制約がアニメーション化され、縮小や移動などが行われます。
ただし、scrollViewDidScroll:
メソッドが呼び出されないようで、混乱します。
さて、これに似たSOに関する他の質問がいくつかありますが、そのほとんどは、scrollViewでdelegateプロパティを設定するのを忘れているようです...
- UIWebView インスタンスが scrollViewDidScroll を呼び出さないのはなぜですか? - デリゲート。
- scrollViewDidScroll は呼び出されませんでした- デリゲート。
- UIWebView が UIScrollViewDelegate メソッドを呼び出さない- デリゲート? 言わなければならなかった。
- UIScrollView - デリゲートで scrollViewDidScroll を実装する方法。
- scrollViewDidScroll が実行されていません- そして...デリゲート。
言うまでもなく、デリゲートを設定しています。いくつかのコード スニペット:
SDDefinitionViewController.h:
@interface SDDefinitionViewController : UIViewController <UIWebViewDelegate, UIScrollViewDelegate>
...
SDDefinitionViewController.m:
...
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
[self loadDefinitions];
// Grab a reference to the ScrollView so that we can set the delegate and then use those method calls to animate the top bar.
self.scrollView = self.webView.scrollView;
self.scrollView.delegate = self;
self.lastScrollViewVerticalOffset = 0;
}
...
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
// (Code) <= Never gets called
}
...
さらに、デバッガー コンソールで次の操作を行いました。
(lldb) po self
$0 = 0x095c0600 <SDDefinitionViewController: 0x95c0600>
(lldb) po self.scrollView
$1 = 0x0954e8d0 <_UIWebViewScrollView: 0x954e8d0; frame = (0 0; 1024 596); clipsToBounds = YES; autoresize = H; gestureRecognizers = <NSArray: 0x954ec50>; layer = <CALayer: 0x954eab0>; contentOffset: {0, 0}>
(lldb) po self.scrollView.delegate
$2 = 0x095c0600 <SDDefinitionViewController: 0x95c0600>
したがって、デリゲートは間違いなく正しく設定されており、ランダムに解放されるものはありません。
最後に、プログラムで呼び出しsetContentOffset
たところself.scrollView
、delegate メソッドが呼び出されました。しかし、ユーザーがジェスチャーでスクロールしていることを検出したいので、それはあまり役に立ちません。
それで、これに関するスクープは何ですか?scrollView がそのデリゲート メソッドを呼び出さないのはなぜですか?
編集:
だから、私のアプリをRevealで見ると、私の UIWebView にはサブビューとして _UIWebViewScrollView があり、その下に UIWebBrowserView があることがわかります。UIWebBrowserView は UIWebView とまったく同じサイズです...
UIWebViewScrollView には、オフセットする通常のコンテンツ ビューがないなど、Webkit がスクロールなどを行っている可能性がありますか?