从不同的线程关闭UIImagePickerController

时间:2011-10-17 16:02:17

标签: iphone multithreading uiimagepickercontroller

在我的多标签应用程序中,线程关心监听来自服务器的消息,并且必须能够关闭UIImagePickerController以防相机在接收到特定消息时处于活动状态。该线程通过NSThread detachNewThreadSelector运行。

我设法通过ApplicationDelegate在线程端调用正确的调用序列,但是拾取器没有被解除:

- (void) closeCameraController {
    [cameraTabController closeSubViewCamera];  // Invokes cancel: on the cameraSubView.
} 

当我通过映射在相机覆盖图按钮上的事件(“取消”按钮)启动它时,相同的序列正常工作:

- (IBAction) cancel {
    [[self parentViewController] dismissModalViewControllerAnimated:NO];        
}

1 个答案:

答案 0 :(得分:1)

来自Apple's Docs

  

注意:在大多数情况下,UIKit类只能用于   应用程序的主要线程。对于课程尤其如此   源自UIResponder或涉及操纵你的   应用程序的用户界面。

您可以使用NSObject的performSelectorOnMainThread:withObject:waitUntilDone:

- (void) closeCameraController {
    [cameraTabController performSelectorOnMainThread:@selector(closeSubViewCamera) 
           withObject:nil
        waitUntilDone:YES];
}