Хорошо, я провел все исследования по этой проблеме, но ни одно из существующих решений, похоже, не решает мою проблему, поэтому вот оно:
- У меня есть собственный класс, который расширяет UIScrollView (и содержит UIView)
- Я хотел бы переопределить метод scrollViewDidScroll из UIScrollViewDelegate (но не все методы)
Я уже пробовал реализовать код из этой проблемы: Как чтобы создать подкласс UIScrollView и сделать свойство делегата закрытым, но по какой-то причине он ничего не делает (пользовательский метод, который был переопределен, никогда не вызывается). Я также знаю, что вам не нужно реализовывать все методы из UIScrollViewDelegate, если вы создаете собственный класс делегата, реализующий протокол (согласно iPhone: нужно ли мне реализовать все методы для UIScrollViewDelegate (или любого делегата)) - но когда я это сделаю это:
MyScrollViewDelegate.h
@interface MyScrollViewDelegate: NSObject <UIScrollViewDelegate>
-(void)scrollViewDidScroll:(UIScrollView *)scrollView;
@end
MyScrollViewDelegate.m
@implementation MyScrollViewDelegate
-(void)scrollViewDidScroll:(UIScrollView *)scrollView
{
NSLog(@"Custom scrollViewDidScroll called.");
// -- some more custom code here --
// ...
}
@end
В подклассе, расширяющем UIScrollView
// this scrollview is initiated by the NIB
- (void)awakeFromNib
{
...
[self setDelegate:[[MyScrollViewDelegate alloc] init]];
}
Но пока он компилируется и запускается, когда я пытаюсь прокрутить прокручиваемое представление, он вылетает с EXC_BAD_ACCESS и загадочным сообщением «(lldb)» в консоли отладки.
Так что я немного не понимаю, что делать.