2

MyTextViewから継承するクラスがありUITextViewます。MyViewControllerのサブクラスであるaもありUIViewControllerます。MyViewControllerプロトコルを実装しUITextViewDelegate、のデリゲートとして設定されMyTextViewます。

MyViewControllerUITextViewDelegate(のような)からのデリゲートメソッドのいくつかを実装し- (void)textViewDidChange:(UITextView *)textView、それらはすべて正常に機能します。ただし、または一部または他のスクロールデリゲートメソッドを実装しようとすると、- (void)scrollViewDidScroll:(UIScrollView *)scrollViewそれらは呼び出されません。問題のスクロールメソッドを宣言するからUITextView継承しUIScrollViewUITextViewDelegate準拠しているため、これが機能するはずだと私は理解しています。UIScrollViewDelegate

The strange thing is that if I go into IB and change the class of the text view from MyTextView to UITextView all the delegate methods get called, including the scrolling onces.

4

2 に答える 2

1

プロパティを再合成することができますdelegate。これは、クラスにプライベートな新しいインスタンス変数と、そのプライベート変数を指す合成されたアクセサーがあることを意味します。したがって、プロパティではなくインスタンス変数によるデリゲートを参照するスーパークラスの実装は通過しません(もちろん、プロパティを参照する実装はサブクラスのアクセサーを呼び出します)。おそらくUITextFieldプロパティをUIScrollView使用し、インスタンスを使用しているようです!

于 2012-08-31T08:09:20.097 に答える
0

私はこれを試していませんが、プロトコルと関係があるのでしょうか?

その場合、3番目の答えが役立つかもしれません: Objective-Cでカスタムデリゲートを使用する方法

于 2012-08-30T19:51:09.457 に答える