Закрытие UIImagePickerController из другого потока - PullRequest
0 голосов
/ 17 октября 2011

В моем приложении с несколькими вкладками поток заботится о прослушивании сообщений, поступающих с сервера, и он должен иметь возможность закрыть UIImagePickerController в случае, если камера активна во время получения определенного сообщения.Поток запускается через NSThread detachNewThreadSelector.

Мне удалось вызвать правильную последовательность вызовов на стороне потока через ApplicationDelegate, но средство выбора не отклонено:

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

Та же последовательность работаетправильно, когда я запускаю его через событие, назначенное на кнопку наложения камеры (кнопка «Отмена»):

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

1 Ответ

1 голос
/ 17 октября 2011

С Документы Apple :

Примечание: классы UIKit по большей части должны использоваться только из Основная тема приложения. Это особенно верно для классов полученный из UIResponder или который включает в себя манипулирование вашим Пользовательский интерфейс приложения любым способом.

Вы можете использовать executeSelectorOnMainThread: withObject: waitUntilDone:

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