突显UIButton的不需要的延迟

时间:2015-05-20 15:55:39

标签: ios uibutton highlight lag ibaction

我有一个连接到IBAction的自定义UIButton。该动作需要很长时间才能执行,并且按钮不会响应用户的触摸而突出显示,直到整个动作完成。我想立即突出显示该按钮,让用户知道它正在做某事。知道如何消除这种滞后吗? (不改变IBAction的作用)

2 个答案:

答案 0 :(得分:1)

执行此操作的唯一方法是在线程上执行实际工作。例如,您可以使用dispatch_async。如果在工作完成时发生另一个手势,请注意会发生什么。

答案 1 :(得分:0)

我有同样的问题。该动作按照你的说法调用方式,但我修复了按钮突出显示的方式:

  1. UIButton
  2. 创建子类
  3. 覆盖方法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];
    }
    
  4. PS:我为正常状态和突出显示状态使用单独的图像,因此我将adjustsImageWhenHighlighted设置为