3

オブジェクトにはUI イベントを処理UIButtonするメソッドがあることがわかりましたが、オブジェクトにはそのようなメソッドがないため、コードでは実行できず、オブジェクトの Interface Builder を使用してそのようなアクションを追加することもできません。 . ジェスチャ認識エンジンを使用できますが、コードの一部がジェスチャ認識エンジンによって処理され、一部がメソッドによって処理されないように追加する簡単な方法はありますか?addTargetUIImageViewUIImageViewaddTargetUIImageViewaddTarget

4

2 に答える 2

7

ボタンが呼び出すのと同じセレクターを呼び出すジェスチャ認識エンジンを追加するのは、それほど難しいことではありません。

UIButton *button = [[UIButton alloc] init];
[button addTarget:self action:@selector(tapped:) forControlEvents:UIControlEventTouchUpInside];

UITapGestureRecognizer *tapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapped:)];
[[self view] addGestureRecognizer:tapRecognizer];


- (void)tapped:(id)sender {}
于 2012-05-25T19:10:07.363 に答える
0

UIImageView は UIControl のサブクラス (UIButton のスーパークラス) ではないため、私の解決策は、タップ ジェスチャを持つ UIControl の動作を偽造し、カスタム UIImageView に addTarget:action メソッドを作成することです。他の UIControl クラス。

ヘッダーに SWImageView という UIImageView のサブクラスを作成しました。

- (void)addTarget:(id)target action:(SEL)action;

メインファイルで:

- (void)addTarget:(id)target action:(SEL)action
{
    if (tapGestureRecognizer!=nil) {
        [self removeGestureRecognizer:tapGestureRecognizer];
    }
    tapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:target action:action];
    [self addGestureRecognizer:tapGestureRecognizer];
}    

ユーザー インタラクションを有効にすることを忘れないでください。

self.userInteractionEnabled = YES;
于 2014-12-31T16:58:40.273 に答える