さて、私はこの問題についてすべての調査を行いましたが、既存の解決策のどれも私の問題に対処していないようですので、ここにあります:
- UIScrollViewを拡張する(そしてUIViewを含む)カスタムクラスがあります
- UIScrollViewDelegateのscrollViewDidScrollメソッドをオーバーライドしたい(すべてのメソッドではない)
私はすでにこの問題のコードを実装しようとしました: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)」メッセージが表示されてクラッシュします。
だから私はここで何をすべきか途方に暮れています。