0

UIImageViewでタッチイベントを検出するのに問題があります。UIImageViewをサブクラス化し、canBecomeFirstResponder、touchedBegan、touchsEndedをオーバーライドしました。

@implementation ImageViewNext

- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        // Initialization code
        self.userInteractionEnabled = YES;
    }
    return self;
}

-(BOOL)canBecomeFirstResponder
{
    return YES;
}

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    NSLog(@"Touches Began event");
}

-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
    NSLog(@"Touches Ended");
}

すべての親ビューでユーザーインタラクションが有効になっていることを確認しました。

しかし、私は自分のイベントを取得しませんか?

私はここで解決策を見つけようとしましたが、運がありませんでした。しかし、私の検索では、同じ効果を得るために「UIGestureRecognizer」を使用している人がいることがわかりました。副次的な質問として、オーバーライドメソッドを使用する、またはUIGestureRecognizerを使用する「正しい」ソリューションは何ですか?通常のボタンに画像が表示されるソリューションは好きではないので、それらの投稿は遠ざけてください:)

4

2 に答える 2

1

本当にinitWithFrame:呼ばれていますか?UIViewには、作成方法に応じて、2つの指定された初期化子initWithFrame:とがあります。initWithCoder

于 2012-06-07T11:16:24.037 に答える
0

タッチイベントが発生しない理由はわかりませんが、UIGestureRecognizerを使用して質問の他の部分に回答すると、レコグナイザーが使用可能なジェスチャのタッチ処理が大幅に簡素化されます。使用がはるかに簡単で、必要なコードも少なくて済みます。

さらに、将来、さまざまなタッチイベント間でネゴシエートする必要がある場合(ドラッグタイプの質問のタップ)、そのロジックはすべて簡単に処理されます。

于 2012-06-07T11:13:10.327 に答える