我有一个UITableView
的子类,当选择一个单元格时我会发生令人沮丧的问题,我按下另一个单元格但不释放。一旦我按下所选单元格就会变得不亮,但是在我从印刷机上释放之前,tableview委托方法didUnhighlightCell
和willDeselectCell
不会被调用。在我在发布版本中选择了一个新单元格之前,我不希望单元格变得不亮。我通过添加一个长按手势识别器解决了这个问题,但这是一个笨重的解决方案,我想要更清洁的东西。
这有更简单的解决方案吗?谢谢
答案 0 :(得分:1)
在UITableView子类中,覆盖touchesBegan:
- (void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
/* Improves the usability of a table view with selectable cells,
* to prevent premature selection of a cell, during dragging.
*/
if (!self.dragging && !self.tracking) {
[super touchesBegan:touches withEvent:event];
}
}
这解决了在拖动过程中使所选行不突出显示的问题。这是因为在用户实际选择新行之前,不会调用didHighlightRowAtIndexPath
和didUnhighlightRowAtIndexPath
。
如果你想在所有的桌面视图中使用这种行为,你可以把它放在超级课程中。