1

カスタムセル内に UIImageView があります。UIImageView をタップして別の詳細ビューをロードしたときのカスタム タップ ジェスチャ認識エンジンを作成しています。

タップ ジェスチャは次のように設定されます。

UITapGestureRecognizer *tapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(imageTapped:event:)];
tapRecognizer.cancelsTouchesInView = YES;
tapRecognizer.numberOfTapsRequired = 1;
tapRecognizer.delegate = (id)self;
[cell.userImage addGestureRecognizer:tapRecognizer];
cell.userImage.userInteractionEnabled = YES;

imageTapped:event: を使用しているため、ユーザーがタップしているセルを検出し、それに応じてデータをロードできます。問題は、次のエラーが発生することです。

ここに画像の説明を入力

そのようにイベントを取り除くと、問題なく完全に機能します。

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

以前に別のアプリケーションでこのメソッドを使用したことがありますが、何らかの理由でこのエラーで正しく動作しません。これが何かわかる人いますか?ありがとう!

4

1 に答える 1

3

上のドキュメントを読む必要がありますUIGestureRecognizer...

ジェスチャ レコグナイザには、1 つ以上のターゲット アクション ペアが関連付けられています。ターゲットとアクションのペアが複数ある場合、それらは離散的で累積的ではありません。ジェスチャが認識されると、これらの各ペアのターゲットにアクション メッセージが送信されます。呼び出されるアクション メソッドは、次のシグネチャのいずれかに準拠する必要があります。

- (void)handleGesture;
- (void)handleGesture:(UIGestureRecognizer *)gestureRecognizer;

これらの署名のいずれかを使用すると、既に観察したようにクラッシュを防ぐことができます。その後、レコグナイザーのプロパティを調べることで、ジェスチャに関係する画像ビューにアクセスでき、そこから適切なセルviewにアクセスできます。UITableView

于 2013-08-24T17:53:47.463 に答える