2010-07-16 66 views
1

CODE的UITableViewCell背景选择状态翻转手势结束之前

我有一些代码,增加了所谓的_recognizer一个UILongPressGestureRecognizer手势识别到的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:

问题

只有当“长按”手势结束我怎么无限期地选择的背景,翻转回来?

回答

3

我改变了我的测试条件从UIGestureRecognizerStateEndedUIGestureRecognizerStateBegan和手势与定时小区选择状态变化:

- (void) cellLongPressRecognized:(id)_sender { 
    if (((UILongPressGestureRecognizer *)_sender).state == UIGestureRecognizerStateBegan) 
     ALog(@"[MyViewController] -cellLongPressRecognized: gesture began..."); 
} 

似乎违反直觉的命名事件这种方式,但似乎工作。

相关问题