我有UITableView
我希望对点击和垂直滑动做出响应,但仍然有类似userInteractionEnabled = NO
的水平滑动。我的意思是,它不会处理触摸并将触摸事件传递回其超级视图。
我尝试过的东西不起作用:
在NO
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath
覆盖touchesBegan
/ touchesMoved
/ touchesEnded
并将活动传递给下一位回复者
为水平滑动添加手势识别器并将cancelsTouchesInView
设置为YES
我一直试图将其打开和关闭几周,所以非常感谢任何帮助!
答案 0 :(得分:2)
你可以更好地查看tableview.view颜色的空视图 清空并向该视图添加手势。如果手势方向是 vertical.scroll tableview
答案 1 :(得分:0)
您是否尝试在表格视图的父视图中添加水平滑动手势识别器?同时关闭表格视图上的水平滚动。 (设置alwaysBounceHorizontal=NO
)
答案 2 :(得分:0)
禁用每个表格视图单元格的用户交互应该会有所帮助。
我建议用cellForRowAtIndexPath
方法进行。
答案 3 :(得分:-1)
这个问题的答案并不简单,因为UITableView管理了很多触摸,而这个触摸由不同的组件管理。 所以,为了给你一个正确和有效的答案,你必须解释:
例如:通过覆盖touchesBegan:withEvent
无法避免UITableViewCell上的滑动到删除,因为内部内容视图(UITableViewCellContentView
私有类接收到触摸,因此您可以子类并覆盖touchesBegan:withEvent
)。
但这不是必需的,因为您可以禁用此行为将此方法添加到UITableViewController:
-(UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath
{
return UITableViewCellEditingStyleNone;
}
当您禁用编辑(例如)时,单元格和表格视图不再能够管理触摸,因此触摸将被转发到链中的下一个响应者。
这只是一个例子,您必须解释所有给您不信任行为的案例,让我们为您提供更多帮助。
最后的建议: 在this Page,您将找到关于命中测试结束事件处理过程如何工作的非常好的和有趣的解释。 当您添加更多详细信息时,我会使用更具体的信息更新答案。
此致
的Fabio