コード
呼び出されたのサブクラスに呼び出されたUILongPressGestureRecognizer
ジェスチャ認識エンジンを追加するコードがいくつかあります。_recognizer
UITableViewCell
cell
...
UILongPressGestureRecognizer *_recognizer = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(cellLongPressRecognized:)];
_recognizer.allowableMovement = 20;
_recognizer.minimumPressDuration = 1.0f;
[[cell contentView] addGestureRecognizer:_recognizer];
[_recognizer release];
...
-cellLongPressRecognized:
セレクターは、ジェスチャが終了したときに単純にログに記録します。
- (void) cellLongPressRecognized:(id)_sender {
if (((UILongPressGestureRecognizer *)_sender).state == UIGestureRecognizerStateEnded)
ALog(@"[MyViewController] -cellLongPressRecognized: gesture ended...");
}
セルをタップして押したまま離すと、コンソールに 1 つのログ メッセージが表示されます。
[MyViewController] -cellLongPressRecognized: gesture ended...
ここまでは順調ですね。
問題
_recognizer.minimumPressDuration
問題は、テーブル セルの背景がプロパティである 1.0 秒の間だけ選択されたままになることです。
デバイス上で 1.0 秒以上指を離すと、セルの背景がUITableViewCellSelectionStyleBlue
選択スタイルから通常の不透明な選択されていない背景に戻ります。
ジェスチャ固有のコードのみがこの問題に関係していることを確認するために、-tableView:didSelectRowAtIndexPath:
テスト中に無効にしました。
質問
背景を無期限に選択したままにして、「長押し」ジェスチャが終了したときにのみ元に戻すにはどうすればよいですか?