iPhone UIView未立即更新

iPhone UIView未立即更新,iphone,Iphone,我的应用程序在单击时有一个按钮,它被禁用,显示活动指示器并执行后台任务。此任务完成后,回调将通过启用按钮并删除活动指示器来更新界面。我遇到的问题是,任务正在完成,回调函数已执行,但活动监视器在屏幕上保留了一段时间,该按钮看起来已禁用,但可以再次单击。谁能告诉我哪里出了问题 非常感谢 回调方法是否在单独的线程中执行? 我这样问是因为任何对视图有影响的调用都应该在主线程上执行 通过执行以下操作可以解决此问题: 创建一个方法,该方法处理与UI相关的代码,并在回调方法中被调用 必须在主线程上执行与UI相

我的应用程序在单击时有一个按钮,它被禁用,显示活动指示器并执行后台任务。此任务完成后,回调将通过启用按钮并删除活动指示器来更新界面。我遇到的问题是,任务正在完成,回调函数已执行,但活动监视器在屏幕上保留了一段时间,该按钮看起来已禁用,但可以再次单击。谁能告诉我哪里出了问题


非常感谢

回调方法是否在单独的线程中执行? 我这样问是因为任何对视图有影响的调用都应该在主线程上执行

通过执行以下操作可以解决此问题:

  • 创建一个方法,该方法处理与UI相关的代码,并在回调方法中被调用
  • 必须在主线程上执行与UI相关的代码
  • 它可能看起来有点像这样:

    //gets called asynchronously when your operation has completed
    -(void)myCallbackHandler {
       [self performSelectorOnMainThread:@selector(updateUI) withObject:nil 
                                                          waitUntilDone:NO];
    }
    
    -(void)updateUI {
        [myActivityIndicatorView stopAnimating];
        [myButton setEnabled:YES];
    }
    

    你能发布一些代码吗?我会尝试提取一些代码,这是我们在某种程度上继承的应用程序的一部分。一个关于它的作用的快速总结。button操作将NSInvocationOperation推送到NSOperationQueue a上。当执行该方法时,它会将一些音频文件缝合在一起,最后一件事是回调到UIViewController类,该类在button控件上将enabled属性设置为“YES”,并在活动指示器上调用“stopAnimating”。再次感谢。