0

仅当操作花费太多时间时,我才想启动我的 UIActivityIndi​​cator:

    - (void) continueLaunch {

        //operations
        //.....
        [activityIndic stopAnimating];

    }

    //my current method
    - (void)lauchApplication {          
        [activityIndic startAnimating];
        [self performSelector:@selector(continueLaunch) withObject:nil afterDelay:0.0f];
    }   

    //what I want to do
    - (void)lauchApplication {
         if ([self performSelector:@selector(continueLaunch) withObject:nil afterDelay:0.0f]duration > 1 second){
              [activityIndic startAnimating];
         } 
    }

我怎样才能做到这一点 ?

4

2 回答 2

5

我认为最好的方法是在您想要等待的持续时间之后启动指标,如果在该持续时间之前的某个时刻发生了某些事情,您可以取消它:

[self performSelector:@selector(startAnimation) withObject:nil afterDelay:1.0f]

并取消它(来自 Apple Doc):

要取消排队的消息,请使用 cancelPreviousPerformRequestsWithTarget: 或 cancelPreviousPerformRequestsWithTarget:selector:object: 方法。

于 2012-04-12T07:57:29.880 回答
2

一种可能的解决方案是:

  1. 创建一个计时器
  2. 每 X 秒在另一个线程中启动一个方法B
  3. 在方法B中检查:如果方法A正在进行并且计时器 > Y 时间,则开始为您的活动指示器设置动画。
于 2012-04-12T07:58:00.170 回答