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

我正在使用找到hereMKButton 的自定义子类(它是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 以进行测试。

标签: ios objective-c iphone uitableview uibutton


【解决方案1】:

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

-(BOOL)isTableViewMoving
{
    return _tableView.isDragging || _tableView.isDecelerating;
}

-(void)didTapButton
{
if ( !isTableViewMoving)
  //dostuff
}

编辑:

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

【讨论】:

    猜你喜欢
    • 2015-02-25
    • 1970-01-01
    • 2018-02-06
    • 1970-01-01
    • 2021-04-29
    • 2016-01-03
    • 2015-06-05
    • 2015-02-09
    • 2012-07-17
    相关资源
    最近更新 更多