有没有遇到过这样的问题:需要长按UITableView
才能触发didSelectRowAtIndexPath
方法?
有没有遇到过这样的问题:需要长按UITableView
才能触发didSelectRowAtIndexPath
方法?
如果您使用了任何手势识别器,请尝试删除手势并检查它是否导致问题?
否则
不确定,但问题可能在UITableView
中开启了delaysContentTouches
。将其关闭,以便快速传递触摸到单元格。
tap.cancelsTouchesInView = false
我有完全相同的问题:
我解决Table View通过短按选择单元格的方法:
你需要在单元格的视图上添加UILongPressGesture,当触发时调用didSelectRowAtIndexPath方法(最好调用另一个方法 - 不是标准的UITableViewDelegate方法),该方法来自于采用UITableViewDelegate协议的类。
我建议你创建自己的协议,继承自UITableViewDelegate,在其中添加长按行为方法,并享受它。类似于:
@protocol LongPressTableViewCellDelegate <UITableViewDelegate>
- (void)tableView:(UITableView *)tableView didLongTapCell:(UITableViewCell *)cell;
@end
在这种情况下,您的委托将采用非标准的UITableViewDelegate,而不是标准的UITableViewDelegate。此外,您必须创建自己的单元格(继承自UITableViewCell),并添加一个委托属性(id),该属性将在长按触发时使用。
还有可能出现标准的didSelectRowAtIndexPath在您的长按之前被触发的情况,因此我建议您禁用表视图的标准选择行为:
_tableView.allowsSelection = NO;