【发布时间】:2023-03-08 21:05:01
【问题描述】:
我有一个 UIButton 的子类放置在 UITableViewCell 的 contentView 中。我遇到的问题是,当我按下按钮并(快速)滚动表格时,按钮的setHighlighted: 方法被调用了三次,所有这些都以YES 作为参数。当表格滚动时,该按钮永远不会被取消突出显示(所以当我完成滚动时,我的一个按钮看起来像是被按下了,但屏幕上不再有任何手指)。如果我按下按钮,请稍等片刻,然后滚动表格不会滚动并且按钮会正确取消突出显示(当触摸事件退出按钮的框架时)。
我已尝试将 tableView 设置为
self.tableView.canCancelContentTouches = NO;
self.tableView.delaysContentTouches = NO;
但这无济于事(设置delaysContentTouches = NO 实际上使表格不可滚动)。我没有尝试在新的 UITableViewCellScrollView 中设置这些,因为这是私有的,我不想为 if IOS7, else 添加新代码...
setHighlighted: 调用来自UIControl touchesBegan:、UIControl touchesMoved 和UIControl touchesEnded:。我从来没有从UIControl touchesCancelled: 得到任何东西,当 tableView 接管触摸事件的控制以进行滚动时,这是我所期望的。
如果有人认为我做错了什么,我可以添加代码,但这对我来说更像是一个概念问题。
为什么我没有从UIControl touchesCancelled: 收到setHighlighted:NO?
我还没有尝试使用非子类 UIButton 和 setImage:forState:,因为我突出显示的状态只是渐变变化,我不想为它们创建 UIImage。但如果必须,我可以。
【问题讨论】:
标签: ios uitableview uibutton uicontrol touches