0

独自のカスタムUIScrollViewを作成しようとしています。これにより、タッチイベントを、スクロールビュー内のイメージビューに描画するロジックを持つデリゲートオブジェクトに渡すことができます。

クラスインターフェイスからデリゲート変数とプロパティを削除すると、通常のスクロールビューとして正常に機能します。カスタムプロトコルデリゲートを作成すると、ビルドされますが、メッセージは渡されません。

助けていただければ幸いです

@class DrawableScrollView;

@protocol DrawableScrollViewDelegate <UIScrollViewDelegate>

- (void)touchesBegan:(DrawableScrollView *)drawableScrollView touches:(NSSet *)touches withEvent:(UIEvent *)event;
- (void)touchesMoved:(DrawableScrollView *)drawableScrollView touches:(NSSet *)touches withEvent:(UIEvent *)event;
- (void)touchesEnded:(DrawableScrollView *)drawableScrollView touches:(NSSet *)touches withEvent:(UIEvent *)event;

@end

@interface DrawableScrollView : UIScrollView {

    id<DrawableScrollViewDelegate> delegate;

}

@property (nonatomic, assign) IBOutlet id<DrawableScrollViewDelegate> delegate;

@end
4

2 に答える 2

1

デリゲート メッセージを渡す UIScrollView メソッドは、毎回プロパティ アクセサーを使用するのではなく、(プライベート) ivar を使用してデリゲートにアクセスする可能性があります。したがって、独自のデリゲート プロパティでそれらをオーバーライドすると、基になるスクロールビュー デリゲートが設定されることはありません。

これを回避する 1 つの方法は、独自の ivar を使用する代わりに、またはそれに加えて、UIScrollView の実装を使用しdelegateてデリゲートを格納することです。setDelegate:もう 1 つは、競合を避けるためにプロパティの名前を変更することです。3 つ目は、スクロールビュー自体をいじるのではなく、スクロールビュー内のビューをタッチに応答させることです。

于 2011-04-04T01:27:58.733 に答える
0

imageViewにタッチを処理させないのはなぜですか?

于 2011-06-04T07:46:52.337 に答える