触摸 UITableViewCell 中的 UIButton 无法滚动表格

Posted

技术标签:

【中文标题】触摸 UITableViewCell 中的 UIButton 无法滚动表格【英文标题】:Touch on UIButton in a UITableViewCell cannot scroll the table 【发布时间】:2011-12-04 22:47:14 【问题描述】:

我需要在UITableViewCell 中添加一个UIButton,一切正常,除了当我触摸按钮内部并移动手指时,表格不会滚动。

我尝试继承 UIButton 并在 touchesMoved: 方法中向 self.nextResponder 发送相同的消息,或者调用 touchesCancelled 并希望它将触摸事件传递给下一个响应者,它们都不起作用。

有什么好的方法可以解决这个问题吗?目前我在UITableViewCell之上添加一个UIView,并手动检测触摸事件,分别将结果传递给按​​钮或单元格的其余部分,但这有点脏。

【问题讨论】:

【参考方案1】:

您可以尝试将UITableViewdelaysContentTouches 属性设置为YES

此外,您可以将 canCancelContentTouches 设置为 YES

如果该属性的值为NO,则滚动视图不滚动 内容视图开始跟踪后,无论手指移动如何。

来源:UIScrollView Class Reference

试试:

_yourTableView.delaysContentTouches = YES;
_yourTableView.canCancelContentTouches = YES;

【讨论】:

【参考方案2】:

最好的方法是制作一个自定义单元格并整齐地完成您的工作。

查看Apple docs

【讨论】:

这只是一个文档链接。它不提供任何反馈或提示。 @reecon:一个建议:只要阅读文档,您就会明白为什么它会成为答案 我读过。我还阅读了所有链接的文件。在 UITableViewCell 中放置一个 UIButton 没有任何意义。

以上是关于触摸 UITableViewCell 中的 UIButton 无法滚动表格的主要内容,如果未能解决你的问题,请参考以下文章

在复合 UIView 中的触摸事件上突出显示 UITableViewCell

如何从 UITableViewCell 中的自定义 UIButton 中删除触摸延迟

我希望 UITableViewCell 中的 UItextField 仅在单元格触摸时成为第一响应者

触摸时 UITableViewCell 图像发生变化

将 UITapGestureRecognizer 触摸传递到底层 UITableViewCell

将 UICollectionView 触摸事件传递给其父 UITableViewCell