3

我有一个UITableView我想要响应点击和垂直滑动的东西,但仍然有类似userInteractionEnabled = NO水平滑动的东西。我的意思是,它不会处理触摸并将触摸事件传递回其父视图。

我尝试过但不起作用的事情:

  • 返回NO_- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath

  • 覆盖touchesBegan//并将事件传递给下一个响应touchesMovedtouchesEnded

  • 为水平滑动添加手势识别器并设置cancelsTouchesInViewYES

几周以来,我一直在尝试打开和关闭此问题,因此非常感谢您的帮助!

4

4 回答 4

2

更好的是,您可以查看 tableview 的空视图。视图颜色应该为空并向该视图添加手势。如果手势方向是垂直的。滚动表视图

于 2013-11-10T08:29:32.973 回答
0

禁用每个表格视图单元格的用户交互应该会有所帮助。我建议在cellForRowAtIndexPath方法中进行。

于 2013-11-09T09:49:37.753 回答
0

您是否尝试将水平滑动手势识别器添加到表格视图的父视图?还要关闭表格视图上的水平滚动。(组alwaysBounceHorizontal=NO

于 2013-11-05T01:33:18.860 回答
-1

这个问题的答案并不简单,因为 UITableView 管理了很多触摸,而这些触摸是由不同的组件管理的。因此,为了给您一个正确且有效的答案,您必须解释:

  • 你想禁用什么样的滑动(从左到右,从右到左)
  • where(在空表视图上,在单元格上)
  • 当您进行此滑动时现在会发生什么(单元格进入编辑模式,导航控制器进入上一页 ecc ....)

例如: UITableViewCell 上的滑动删除不能通过覆盖来避免touchesBegan:withEvent,因为触摸是由内部内容视图接收的(UITableViewCellContentView私有类,所以你不能继承和覆盖touchesBegan:withEvent)。但这不是必需的,因为您可以将此方法添加到 UITableViewController 中禁用此行为:

-(UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath
{
    return UITableViewCellEditingStyleNone;
}

当您禁用编辑(例如)时,单元格和表格视图不再能够管理触摸,因此触摸被转发到链中的下一个响应者。

这只是一个例子,您必须解释所有给您带来不良行为的情况,让我们为您提供更多帮助。

最后的建议:在这个页面上,你会找到关于命中测试结束事件处理过程如何工作的非常好的和有趣的解释。当您添加更多详细信息时,我将使用更具体的信息更新答案。

问候

法比奥

于 2013-11-09T15:45:28.097 回答