2

私の質問を完全に解決する答えがいくつか見つかりましたが、いくつかの手順が欠けているようです。ScrollView の「ViewDidBllabla」イベントをインターセプトしようとしているだけなので、カスタム UIScrollView クラスを作成しました。

MyScrollView.m

#import "MyScrollView.h"

@implementation MyScrollView

- (id)initWithFrame:(CGRect)frame{
    NSLog(@"initWithFrame");
    self = [super initWithFrame:frame];
    if (self) {
        // Initialization code
    }
    return self;
}

-(void)scrollViewWillBeginDragging:(UIScrollView*)scrollView{
    NSLog(@"scrollViewWillBeginDragging");
    //scrollView.contentOffset
}

-(void)scrollViewDidScroll:(UIScrollView*)scrollView{
    NSLog(@"scrollViewDidScroll");
}

-(void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView{
    NSLog(@"scrollViewDidEndScrollingAnimation");
}

@end

MyScrollView.h

#import <UIKit/UIKit.h>

@interface MyScrollView : UIScrollView <UIScrollViewDelegate>

@end

カスタム スクロール ビューを割り当てると、コンソール メッセージ "initWithFrame" が表示されますが、他のイベントにアクセスする方法がありません。私は何が欠けていますか?

他のコードが必要な場合はお気軽にお問い合わせください。ただし、カスタムの "initWithFrame" メソッドに到達したので、エラーはここにあるはずです。

4

1 に答える 1

4

ビューをそれ自体のデリゲートとして設定してみてください。

if (self) {
    // Initialization code
    self.delegate = self;
}

技術的には、スクロールイベントに応答するために継承する必要はありません。をの実装にUIScrollView設定するだけで十分です。delegate<UIScrollViewDelegate>

また、このscrollViewDidEndScrollingAnimation:メソッドは約2年間使用されていないため、最近のiOSインストールでは呼び出されません。

于 2012-05-01T15:30:37.173 に答える