当前位置:  开发笔记 > 运维 > 正文

UIButton延迟了状态变化

如何解决《UIButton延迟了状态变化》经验,为你挑选了3个好方法。

我有一个UIButton子视图UITableViewCell.

触摸此按钮时,用户必须按住按钮约半秒钟才能将按钮的图像更改为UIControlStateHighlighted图像.

这意味着如果用户只是按照通常的情况点击按钮,则不会显示突出显示的状态.

为什么会发生这种情况,我该如何解决?



1> David Hodge..:

我刚刚遇到这个问题,发现此问题尚未解决.拧了一会儿后,我找到了解决方法.

现在,您可以通过关闭延迟内容套餐或取消选中桌面视图上的"延迟内容触摸"框来解决此问题.

唯一的负面影响是用户将无法点击按钮并启动滚动手势.但是,如果用户尝试从本身不接受触摸的任何地方开始滚动,则行为应与以前相同.



2> Donnit..:

大卫霍奇的回答.

我只是想添加一种方法来消除David已经描述过的"唯一的负面影响":如果你开始在带有delayContentTouches = NO的UIScrollView中的UIcontrol内滚动,则滚动不起作用.

解决方案 子类UIScrollView(或UITableView作为原始问题)并覆盖:

-(BOOL) touchesShouldCancelInContentView:(UIView *)view {   
return YES; 
}

您在UIScrollView/UITableView中的UIControl将立即更改其状态,即使在某些UIControl上启动触摸,滚动视图也可以滚动.奇迹般有效.



3> lucius..:

问题是您的UIButton位于UITableView中.这意味着表格视图必须确定您的点按是否将是滑动,或者它是否只是用于按钮的点击.表视图必须延迟向UIButton发送消息,直到它知道用户不打算滑动,因此滚动视图而不是按下按钮.

如果您不需要表视图,请删除UITableView.

推荐阅读
凹凸曼00威威_694
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有