0

我有一个奇怪的问题。我有一个按钮,按下按钮我正在做

以下

- (IBAction)btnPressed:(id)sender {

    [ _spinner startAnimating];//where _spinner is a ActivityIndicator

    [self showResult];

}

-(void) showResult{

    sleep(10);

    resultText.text=@"Hi..Sorry.It has been a long wait";

}

但是微调器永远不会开始动画,即使调用了 showResult 方法

适当地。我觉得这很奇怪。当我将 [_spinner startAnimating] 放入 viewDidLoad

它完美无缺。任何帮助是极大的赞赏。

4

2 回答 2

2

在主线程上调用 sleep 方法导致 UI 挂起,这就是您看不到活动指示器的原因

一种方法:

- (IBAction)actionbuton:(id)sender {

    [_activity startAnimating];

    [self performSelectorInBackground:@selector(backgroundProcess) withObject:nil];
}

- (void) backgroundProcess{

    sleep(4);
    [self performSelectorOnMainThread:@selector(processingDone) withObject:nil waitUntilDone:NO];
}

- (void) processingDone{

    [_activity stopAnimating];
}
于 2012-11-28T11:54:26.943 回答
0
  1. 首先在按钮按下方法中启动您的活动。
  2. 然后在计时器中调用您的 showResult 方法后。
  3. 我认为这将解决您的问题。
  4. 还要从 showResult 中删除 Sleep。
于 2012-11-28T12:06:48.867 回答