を教えてください問題
、あなたは毎回cellForRowAtIndexPath
は、細胞を約あるたびにある、と呼ばれる新しいTapGestureRecognizerを追加します画面に表示されます!
解決策1:あなたはまた、単にそれがない場合は、新しいものを追加し、細胞が既にジェスチャー認識が含まれているかどうかを確認することができず、
旧ジェスチャー認識装置を保管してください。
// Check if the cell already contains a gesture recognizer
// if not, add one!
if (cell.gestureRecognizers.count == 0) {
// Now add the tap gesture recognizer and it will be the only one
UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapDetected:)];
singleTap.numberOfTapsRequired = 1;
[cell.image setUserInteractionEnabled:YES];
[cell.image addGestureRecognizer:singleTap];
}
注:これは一つだけTapGestureRecognizerは、各セルに適用されることが保証されますあなたは、おそらくチェックし、セルはあなたが をさらに追加することもできますdesire- 正確にジェスチャー認識が含まれていることを確認しなければなりませんジェスチャ認識プログラムをセルに追加してから、 に正しいものが含まれていることを確認する必要があります。
解決策2:TapGestureRecognizerを追加する前に、細胞からのすべてのジェスチャー認識装置を取り外し
ジェスチャー認識機能を削除します。これを行う、ちょうどあなたのカスタムセルに
// Removes all gesture recognizers in the cell
for (UIGestureRecognizer *recognizer in cell.gestureRecognizers) {
[cell removeGestureRecognizer:recognizer];
}
// Now add the tap gesture recognizer and it will be the only one
UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapDetected:)];
singleTap.numberOfTapsRequired = 1;
[cell.image setUserInteractionEnabled:YES];
[cell.image addGestureRecognizer:singleTap];
すべての画像に同じタップジェスチャーを適用するか、画像ビューにタップジェスチャーが既に含まれている場合はスキップしますか? –
行のすべての画像に対して同じジェスチャーを追加したいだけですが、1回だけです。私の関数はそれを行いますが、常にテーブルをスクロールすると機能します。私はタップ機能で常に値の変更を追加しているのであれば、これを最初に追加したいだけです... – user3745888
既存のタップレコグナイザを最初に削除して追加できない理由はありますか? – DMan