startAnimating在按下按钮的IBAction内部不起作用

时间:2012-11-28 11:48:19

标签: objective-c cocoa-touch uiactivityindicatorview

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

以下

- (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方法被调用

,微调器也永远不会开始动画

正确。我觉得这很奇怪。当我在viewDidLoad

中放置[_spinner startAnimating]时

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

2 个答案:

答案 0 :(得分: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];
}

答案 1 :(得分:0)

  1. 首先在按钮按下方法中启动你的活动。
  2. 然后在计时器中调用showResult方法。
  3. 我认为这样可以解决您的问题。
  4. 同时从showResult中移除睡眠。