1

SimpleUITapGestureRecognizerを追加し、ユーザーがタップ/タッチしたときに呼び出されるGesture メソッドUIImageViewを作成しました UIImageView

私のコードは:

UITapGestureRecognizer *eagleTapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(eagleTapGestureIsCall:)];
eagleTapGesture.numberOfTapsRequired = 1;
[self.egaleImgView addGestureRecognizer:eagleTapGesture]; 

ジェスチャー方法:

- (void)eagleTapGestureIsCall:(UITapGestureRecognizer *)recognizer
{
    CGPoint location = [recognizer locationInView:[recognizer.view superview]];
    NSLog(@"Eagle is Tapped X - %f",location.x);
    NSLog(@"Eagle is Tapped Y - %f",location.y);
}

UIViewここで、代わりにジェスチャーを追加するself.egaleImgViewと機能します(ジェスチャーメソッドが呼び出されることを意味します)が、なぜ機能しないのですself.egaleImgViewか???

グーグルで調べたところ、 にUIView到達する前にタッチを傍受している可能性があることがわかりましたUIImageView

だから私は最初に次の行を追加しましたviewDidLoad

self.view.userInteractionEnabled = NO; /// Here i set userInteractionEnabled = NO;

理解を深めるために、以下に構造を説明します。

                main UIView
                  |     |

(Sub view) mainBackGroungImageView //// size is similar to size of main UIView
                  |     |
        (Sub view) gestureAdded ImageView 

編集:

self.egaleImgView.userInteractionEnabled = YES;imageViewに既に追加したことを忘れて申し訳ありませんが、うまくいきません。

私の問題に関する提案をお願いします。

前もって感謝します。

4

4 に答える 4

12

デフォルトではNOImageView.userInteractionEnabled = YES;なので、設定してください。また、ビューのユーザー インタラクションも YES に設定することをお勧めします。

于 2013-06-20T07:56:46.073 に答える
1

[recognizer locationInView:[recognizer.view superview]] の代わりに;

[レコグナイザ locationInView:self] を使用します。

于 2013-06-20T09:11:15.193 に答える
0

UIImageView userInteractionEnabled は無効になっています。できないようにする。

UITapGestureRecognizer *eagleTapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(eagleTapGestureIsCall:)];
eagleTapGesture.numberOfTapsRequired = 1;
[self.egaleImgView addGestureRecognizer:eagleTapGesture]; 
self.egaleImgView.userInteractionEnabled = YES;

私は同じ問題を抱えていました。これで解決しました。

于 2013-06-20T07:59:57.043 に答える