任何人都遇到UITableView
需要长按以触发didSelectRowAtIndexPath
方法的问题?
答案 0 :(得分:21)
如果您使用过任何手势识别器,请尝试将其删除并检查是否会导致问题?
其他明智的
不确定但问题可能出在UITableView
delaysContentTouches
已启用开启。将此关闭,以便更快地接触到细胞。
答案 1 :(得分:4)
在我的情况下,我的视图中有一个UITapGestureRecognizer来隐藏我的键盘。
这解决了这个问题:
tap.cancelsTouchesInView = false
答案 2 :(得分:2)
我遇到了同样的麻烦:
我的解决方案是通过短按选择表视图中的单元格(按):
答案 3 :(得分:0)
你必须将UILongPressGesture添加到你的单元格的视图中,然后在你的类中采用UITableViewDelegate调用didSelectRowAtIndexPath(更好的方法是调用另一个方法 - 而不是标准的UITableViewDelegate方法)。
我建议你创建自己的协议,继承自UITableViewDelegate,为那里添加长按行为方法并享受。类似于:
@protocol LongPressTableViewCellDelegate <UITableViewDelegate>
- (void)tableView:(UITableView *)tableView didLongTapCell:(UITableViewCell *)cell;
@end
在这种情况下你的代表将采用非标准的UITableViewDelegate,但是这个。此外,您必须创建自己的单元格(从UITableViewCell继承)并添加委托属性(id),将在长按触发时使用。
另外可能会出现标准didSelectRowAtIndexPath在您的长按将触发之前被触发的情况,因此我建议您禁用表格视图的标准选择行为:
_tableView.allowsSelection = NO;