等待 UIButton 恢复为 UIControlStateNormal

Posted

技术标签:

【中文标题】等待 UIButton 恢复为 UIControlStateNormal【英文标题】:Waiting for UIButton to revert to UIControlStateNormal 【发布时间】:2012-08-27 21:13:35 【问题描述】:

当用户点击我界面上的按钮时,我想使用 renderInContext 创建屏幕图像:

但是,创建图像时按钮处于“按下”状态 - 即使用 UIControlStateHighlighted 图像。

在我创建图像之前,有什么方法可以等待此按钮恢复到 UIControlStateNormal 状态?

如果没有,我能想到的唯一其他解决方案是重新创建屏幕外的视图,并对其进行成像。

P.S 我宁愿避免使用任意计时器来等待设定的时间间隔。

【问题讨论】:

【参考方案1】:

使用子类按钮创建和替换您的按钮,并在

时触发您的 renderInContext
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent*)event 

方法被调用。当用户将手指从按钮上移开时调用此方法。

或者使用uibutton的这个方法设置已有按钮的动作方法:

-(void)addTarget:(id)target action:(SEL)action forControlEvents:(UIControlEvents)controlEvents

将控件事件设置为 UIControlEventTouchUpInside

【讨论】:

我正在使用 UIControlEventTouchUpInside - 不幸的是,附加的动作在按钮改变它的图像之前触发。 如果您从操作方法的开头控制按钮的图像,而不是让按钮自动执行,您可以在捕获图像之前让按钮看起来像您想要的任何东西。

以上是关于等待 UIButton 恢复为 UIControlStateNormal的主要内容,如果未能解决你的问题,请参考以下文章

带有 UIControl/UIButton 子视图的 ScrollView/TableView 在 iOS 8 下不可滚动

如何将自定义 UIControl 中按下的 UIButton 传递给我的视图控制器?

如何为 UIControl/UIButton 动画从一种状态到另一种状态的过渡? [复制]

UIButton 上的 UIControl.State.Highlighted 图像仅在第一次触摸事件后有效

UIControl

如何使 UIControl 在 XCUITest 中显示为按钮?