ios - UITapGestureRecognizer 不会取消 UITableView 元素上的点击

标签 ios objective-c uitableview uitapgesturerecognizer

我实现了 UITableView,其中每个单元格都包含一些按钮 为了检测用户是否点击了表格,我添加了 UITapGestureRecognizer。

我希望单元格中的按钮在用户点击它们时不执行任何操作。 我已经实现了这个选择器:

- (void) backgroundTouched:(UITapGestureRecognizer*)sender {
  UIView *view = sender.view;
  NSLog(@"backgroundTouched %@", view);
}

我发现,当我点击表格上的任何位置时,该选择器都会被调用,除非我点击 UITableViewCell 中包含的任何按钮。

我怎样才能避免这种情况?

这是创建 UITapGestureRecognizer 的代码:

pragma mark UISearchControllerDelegate

- (void)didPresentSearchController:(UISearchController *)searchController
{
  NSLog(@"didPresentSearchController");
  self.cancelGesture = [UITapGestureRecognizer new];
  [self.cancelGesture addTarget:self action:@selector(backgroundTouched:)];
  self.cancelGesture.cancelsTouchesInView = YES;
  [self.tableView addGestureRecognizer:self.cancelGesture];
}

最佳答案

如果您不希望按钮执行任何操作,请禁用按钮的 userInteractionEnabled。

cell.addCashButton.userInteractionEnabled = NO;

关于ios - UITapGestureRecognizer 不会取消 UITableView 元素上的点击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46071850/

相关文章:

objective-c - 显示 map 时,iOS 6 应用程序在 EAGLContext 中崩溃

iphone - 混合 CATextLayer 和 CAScrollLayer

iphone - 异步加载tableview单元格数据的正确方法

swift - iOS swift 3 如何更改 switch 语句中的类型

iPhone,在表格 View 中单击编辑/完成按钮的钩子(Hook)

iphone - 以编程方式创建 UITextField 事件

objective-c - PDF 解析为 NSString

ios - UITableView contentSize 在 iOS8 和 iOS9 中的计算方式不同?

objective-c - 在 OS X/Cocoa 中存储数据的首选方式?

iphone - 新的 Facebook IOS SDK?我们可以将旧 sdk 与新 sdk 一起使用吗?