我有一个连接到IBAction的自定义UIButton。该动作需要很长时间才能执行,并且按钮不会响应用户的触摸而突出显示,直到整个动作完成。我想立即突出显示该按钮,让用户知道它正在做某事。知道如何消除这种滞后吗? (不改变IBAction的作用)
答案 0 :(得分:1)
执行此操作的唯一方法是在线程上执行实际工作。例如,您可以使用dispatch_async
。如果在工作完成时发生另一个手势,请注意会发生什么。
答案 1 :(得分:0)
我有同样的问题。该动作按照你的说法调用方式,但我修复了按钮突出显示的方式:
UIButton
覆盖方法hitTest
:
-(UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event
{
if (CGRectContainsPoint(self.bounds, point))
{
self.imageView.image = [self imageForState:UIControlStateHighlighted];
return self;
}
return [super hitTest:point withEvent:event];
}
PS:我为正常状态和突出显示状态使用单独的图像,因此我将adjustsImageWhenHighlighted
设置为否。