UIButton 干扰 UITableView

Posted

技术标签:

【中文标题】UIButton 干扰 UITableView【英文标题】:UIButton Interfering with UITableView 【发布时间】:2015-07-25 21:20:41 【问题描述】:

我正在使用找到here 的MKButton 的自定义子类(它是UIButton 的子类)。

我有一个UITableView,其中有 X 个 UITableViewCells。这些单元格中的每一个在 tableView 中都有一个或多个MKButton。这些单元格的目的是在单击其中任何一个单元格时打开指向网页的链接。

每当我滚动浏览UITableView 时,我都会不小心点击其中一个 MKButton。我不知道如何防止这种情况。

如果有什么不同,我希望能够支持 ios 7 和 iOS 8。

我环顾四周,并没有找到很多东西。到目前为止,这是我尝试过的:

delaysContentTouches 设置为YES。 将canCancelContentTouches 设置为YES。 子类UITableView 并覆盖- (BOOL)touchesShouldCancelInContentView:(UIView *)view 以返回YES;

【问题讨论】:

你在哪里设置了delaysContentTouches?在按钮上还是在 tableview 上? 我已经设置在UITableView 好的。你在tableview上试过canCancelContentTouches = YES吗? 是的。我相信默认情况下它是“YES”。 不,我认为默认情况下是 NO。这通常是按钮的作用。您也可以尝试在按钮本身上设置它(尝试是和否)?为了更好地衡量,也将 delaysContentTouches 设置为 NO 以进行测试。 【参考方案1】:

只需识别表格是否在移动并抑制按钮点击。

-(BOOL)isTableViewMoving

    return _tableView.isDragging || _tableView.isDecelerating;


-(void)didTapButton

if ( !isTableViewMoving)
  //dostuff

编辑:

找到了一个更好的解决方案:只需使用UITapGestureRecognizer。由于某种原因,它比touchUpInside 效果更好。

【讨论】:

以上是关于UIButton 干扰 UITableView的主要内容,如果未能解决你的问题,请参考以下文章

带有 UITableView ui 故障的 UISearchController

抗干扰的措施都有哪些?

EMI (电磁干扰)

从 UIButton 中获取 UIButton 的标签,该 UIButton 位于此 UIButton 呈现的弹出框中

无干扰的学生

如何删除多个 UIButton 或动态创建的特定 UIButton?