UIScrollViewの委任が機能しない-助けが必要です!
-
06-07-2019 - |
質問
地獄になった簡単な仕事のために、私は真剣に髪を失いました。 UIScrollViewサブクラス-MyScrollViewとUIViewControllerサブクラスStoryViewControllerがあり、そのスクロールビューを使用しています。スクロールがいつスクロールされるかを知る必要があるので、どうすればよいですか?委任しよう!
// StoryViewController.h
@interface StoryViewController : UIViewController <UIScrollViewDelegate>
// StoryViewController.m
// init
scrollView = [[MyScrollView alloc] init];
scrollView.delegate = self;
// delegated function
- (void)scrollViewDidScroll:(UIScrollView *)s {
NSLog(@"TEST");
}
編集:いくつかのNSLogs
Self: <StoryViewController: 0xfce090>
ScrollView Delegate: <StoryViewController: 0xfce090>
WebView Delegate: <StoryViewController: 0xfb1a30>
Edit:UIWebViewサブクラス(MyWebView)はMyScrollViewのサブビューで正常に動作し、(void)webViewDidFinishLoad:(UIWebView *)webView(同じstoryviewcontroller.m内)がメッセージを出力します。
エラーなし、正常にビルド、正常に実行。スクロール後-何も印刷されません。
何が間違っているのですか?
解決 3
したがって、再び、愚かな賞はsniurkstに与えられます。実際には、UIScrollViewに誤って追加されたUIWebViewでしたので、私にとっては、「ああ、私のスクロールビューは機能しています」、それでもUIWebViewはそれ自体でスクロールしていました。
すみません、私の愚かさ。次回私がコードサンプルを追加するのを手伝ってくれてありがとう、そうすれば何が起こっているのかを見て、私の間違いを笑うことができます:)
そして、もし誰かが私にScrollViewをWebViewとともに正しく使用する方法の例を教えてくれれば、ScrollViewがすべてのスクロールを担当することになり、とても感謝します。
他のヒント
これは赤いニシンかもしれませんが、allocとinitWithFrame:ではなく、allocとinitを呼び出しています。 viewDidLoadメソッドにscrollViewを追加していると思いますか?これはXIBベースのコントローラーですか? XIBファイルにscrollviewを追加して、そこに設定してみましたか?他のデリゲートメソッドを追加しようとしましたか?
scrollView
が実際に表示されるスクロールビューであることは確かですか?私は絶望の順にチェックすると思うことができるいくつかのこと:
- self.viewがロードされた後に、実際にscrollViewをself.viewに追加したことを確認します
- self.viewにscrollViewを追加すると、デリゲートを割り当てていたときに持っていたオブジェクトと同じであることを確認します
- scrollViewのデリゲートがまだビューコントローラーに設定されているscrollViewを追加するときにチェック
- 自分がデリゲートを割り当てる際に実際にView Controllerに設定されていることを確認します
- 通常のUIScrollViewを使用して、何か変更がないか確認してください