不必要的延迟高亮UIButton



我有一个连接到IBAction的自定义UIButton。该操作需要很长时间才能执行,并且在整个操作完成之前,按钮不会响应用户的触摸而突出显示。我希望按钮立即突出显示,让用户知道它正在做的事情。有办法消除这个延迟吗?(不改变IBAction的功能)

做到这一点的唯一方法是在线程上执行实际工作。例如"dispatch_async"。当工作正在进行时,如果出现另一个手势,请注意会发生什么。

我也有同样的问题。该操作调用方式,如你所说,但我的方式来修复突出显示按钮:

  1. UIButton创建子类
  2. 覆盖方法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

最新更新