サブビューとして 3 つのスクロール ビューを持つビュー コントローラーがあります。ページが変更されるたびに、子スクロール ビューが親ビュー コントローラーに通知するようにしたいと考えています。
委任パターンを設定することでこれを行うと思いました。私の子供 (UIScrollView のサブクラス) は、ヘッダー ファイルでそれを設定します。
@interface TriptychScrollView : UIScrollView <UIScrollViewDelegate> {
id delegate;
}
- (id)delegate;
- (void)setDelegate:(id)newDelegate;
@end
@protocol RCScrollDidChange
@optional
- (void)scrollView:(TriptychScrollView *)scrollView imageDidChange:(NSNumber *)index;
@end
ソース ファイルには、デリゲート アクセサー メソッドがあります。
- (id)delegate {
return delegate;
}
- (void)setDelegate:(id)newDelegate {
delegate = newDelegate;
}
残念ながら、これはデリゲートを自己呼び出しに設定したことが無視されていることを意味します。
- (id)initWithFrame:(CGRect)frame {
self = [super initWithFrame:frame];
if (self) {
[self setDelegate:self];
}
return self;
}
.. したがって、2 つのメソッドscrollViewDidScroll:
とscrollViewDidEndDecelerating:
が呼び出されません! これは、スクロール ビューを制御できなくなったことを意味します。
私はこれを間違ってやっていますか?または、子サブビューがメッセージを親に送り返すためのより良い方法はありますか?