代码
我有一些代码将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...");
}
当我点击、按住并释放一个单元格时,我的控制台会显示一条日志消息:
[MyViewController] -cellLongPressRecognized: gesture ended...
到现在为止还挺好。
问题
问题是表格单元格的背景仅保持选中状态 1.0 秒,即_recognizer.minimumPressDuration
属性。
如果我将手指放在设备上的时间超过 1.0 秒,则单元格的背景将从UITableViewCellSelectionStyleBlue
选择样式翻转回其通常的、不透明的、未选择的背景。
为了确保这个问题只涉及特定于手势的代码,我-tableView:didSelectRowAtIndexPath:
在测试时禁用了。
问题
如何无限期地选择背景,仅在“长按”手势结束时才翻转?