我有一个UIButton
子视图UITableViewCell
.
触摸此按钮时,用户必须按住按钮约半秒钟才能将按钮的图像更改为UIControlStateHighlighted
图像.
这意味着如果用户只是按照通常的情况点击按钮,则不会显示突出显示的状态.
为什么会发生这种情况,我该如何解决?
我刚刚遇到这个问题,发现此问题尚未解决.拧了一会儿后,我找到了解决方法.
现在,您可以通过关闭延迟内容套餐或取消选中桌面视图上的"延迟内容触摸"框来解决此问题.
唯一的负面影响是用户将无法点击按钮并启动滚动手势.但是,如果用户尝试从本身不接受触摸的任何地方开始滚动,则行为应与以前相同.
大卫霍奇的回答.
我只是想添加一种方法来消除David已经描述过的"唯一的负面影响":如果你开始在带有delayContentTouches = NO的UIScrollView中的UIcontrol内滚动,则滚动不起作用.
解决方案 子类UIScrollView(或UITableView作为原始问题)并覆盖:
-(BOOL) touchesShouldCancelInContentView:(UIView *)view { return YES; }
您在UIScrollView/UITableView中的UIControl将立即更改其状态,即使在某些UIControl上启动触摸,滚动视图也可以滚动.奇迹般有效.
问题是您的UIButton位于UITableView中.这意味着表格视图必须确定您的点按是否将是滑动,或者它是否只是用于按钮的点击.表视图必须延迟向UIButton发送消息,直到它知道用户不打算滑动,因此滚动视图而不是按下按钮.
如果您不需要表视图,请删除UITableView.