我有一个连接到IBAction的自定义UIButton。该操作需要很长时间才能执行,并且在整个操作完成之前,按钮不会响应用户的触摸而突出显示。我希望按钮立即突出显示,让用户知道它正在做的事情。有办法消除这个延迟吗?(不改变IBAction的功能)
做到这一点的唯一方法是在线程上执行实际工作。例如"dispatch_async
"。当工作正在进行时,如果出现另一个手势,请注意会发生什么。
我也有同样的问题。该操作调用方式,如你所说,但我的方式来修复突出显示按钮:
- 为
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
设置为NO。