好的,所以我为这个问题做了所有的研究,但现有的解决方案似乎都没有解决我的问题,所以这里是:
- 我有一个扩展 UIScrollView 的自定义类(并包含一个 UIView)
- 我想覆盖 UIScrollViewDelegate 中的 scrollViewDidScroll 方法(但不是所有方法)
我已经尝试实现这个问题的代码:How to subclass UIScrollView and make the delegate property private但由于某种原因,它没有做任何事情(被覆盖的自定义方法永远不会被调用)。我也知道,如果您创建实现协议的自定义委托类(根据iPhone:我是否需要为 UIScrollViewDelegate(或任何委托)实现所有方法),您不必实现 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)”消息而崩溃。
所以我有点不知所措。