4

我可以通过这段代码调用一些选择器

[self performSelector:<#(SEL)#> onThread:<#(NSThread *)#> withObject:<#(id)#> waitUntilDone:<#(BOOL)#>]

并且线程将等到这个选择器工作(如果我设置了waitUntilDone:YES)。我的问题是 - 我可以等到一些代码完成吗?

例如。我有一些子视图,其中加载了动画。动画持续时间为 2 秒。如果我在背景视图上进行一些操作,在制作动画时,我会出错。我想等到动画结束。而且我不能制作选择器,并使用

[self performSelector:<#(SEL)#> onThread:<#(NSThread *)#> withObject:<#(id)#> waitUntilDone:<#(BOOL)#>]

有什么建议么?)

4

3 回答 3

5

你可以试试这个方法

-(void)waitUntilDone:(void(^)(void))waitBlock {
    //use your statement or call method here
    if(waitBlock){
        waitBlock();
    }
}

你需要把它用作

[self.tableView waitUntilDone:^{
    //call the required method here                                            
}];
于 2013-03-13T11:26:59.490 回答
2

UIView动画以块样式动画的形式将其提供给您

[UIView animateWithDuration:0.25f
                 animations:^{
                   // animations
                 } completion:^(BOOL finished) {
                   // run code when the animation is finished
                 }];
于 2013-03-13T11:29:30.120 回答
1

等到动画完成然后做剩下的事情:

例如:

   [UIView animateWithDuration:duration
    animations:^
    {
       //DO ANIMATION ADJUSTMENTS HERE
    }
    completion:^(BOOL finished)
    {
        //ANIMATION DID FINISH -- DO YOUR STUFF
    }];
于 2013-03-13T11:28:23.100 回答