У меня есть контроллер вида, у которого есть три вида прокрутки в качестве подпредставлений. Я хотел бы, чтобы дочерние представления с прокруткой информировали родительский контроллер представления при каждом изменении страницы.
Я думал, что сделаю это, настроив шаблон делегирования. Мой ребенок (подкласс 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;
}
.. и поэтому два метода scrollViewDidScroll:
и scrollViewDidEndDecelerating:
не вызываются! Это означает, что я фактически потерял контроль над прокруткой.
Я делаю это неправильно? Или есть ли лучший способ для дочерних подпредставлений отправлять сообщения своим родителям?