【发布时间】:2015-08-01 23:56:28
【问题描述】:
我有一个连接到 IBAction 的自定义 UIButton。该动作需要很长时间才能执行,并且按钮不会响应用户的触摸而突出显示,直到整个动作完成。我希望按钮立即突出显示,让用户知道它正在做某事。知道如何消除这种滞后吗? (不改变 IBAction 的作用)
【问题讨论】:
标签: ios uibutton highlight lag ibaction
我有一个连接到 IBAction 的自定义 UIButton。该动作需要很长时间才能执行,并且按钮不会响应用户的触摸而突出显示,直到整个动作完成。我希望按钮立即突出显示,让用户知道它正在做某事。知道如何消除这种滞后吗? (不改变 IBAction 的作用)
【问题讨论】:
标签: ios uibutton highlight lag ibaction
我也有同样的问题。动作调用方式如你所说,但我修复按钮突出显示的方式:
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。
【讨论】:
做到这一点的唯一方法是在线程上执行实际工作。例如,您可以使用dispatch_async。小心如果在工作完成时出现另一个手势会发生什么。
【讨论】: