【问题标题】:Unwanted delay highlighting UIButton不需要的延迟突出显示 UIButton
【发布时间】:2015-08-01 23:56:28
【问题描述】:

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

【问题讨论】:

    标签: ios uibutton highlight lag ibaction


    【解决方案1】:

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

    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

    【讨论】:

      【解决方案2】:

      做到这一点的唯一方法是在线程上执行实际工作。例如,您可以使用dispatch_async。小心如果在工作完成时出现另一个手势会发生什么。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-02-20
        • 2013-05-29
        • 1970-01-01
        • 2019-03-08
        • 2014-02-03
        • 1970-01-01
        相关资源
        最近更新 更多