Я пытаюсь использовать интерфейс UIImagePickerController из OS 3.1 с cameraOverlayView и takePicture, но мне явно не удалось понять, как это работает, и поэтому я не получаю желаемого поведения.
Что я хочу сделать, так это открыть камеру и сделать снимок автоматически, не заставляя пользователя взаимодействовать с инструментом выбора или редактировать изображение. Поэтому я создаю подкласс UIImagePickerController (аналогично примеру в http://github.com/pmark/Helpful-iPhone-Utilities/tree/master/BTL%20Utilities/) и отключите все элементы управления:
- (void)displayModalWithController:(UIViewController*)controller animated:(BOOL)animated {
self.sourceType = UIImagePickerControllerSourceTypeCamera;
self.showsCameraControls = NO;
self.navigationBarHidden = YES;
self.toolbarHidden = YES;
// Setting the overlay view up programmatically.
ipView = [[ImagePickerView alloc] init];
self.cameraOverlayView = ipView;
[controller presentModalViewController:self animated:NO];
}
В overlayView мне удалось принудительно запустить метод takePicture UIImagePickerController (я знаю это, потому что могу выполнить его NSLog, и я слышу звук камеры, делающей снимок). OverlayView отображается нормально. Однако метод делегата didFinishPickingMediaWithInfo: никогда не вызывается, и imagePickerControllerDidCancel также не вызывается.
Итак, как мне либо вызвать методы делегата, либо сохранить изображение, переопределив метод takePicture? (Я понятия не имею, как захватить здесь данные изображения, и Google, похоже, меня подвел). Я не могу избавиться от ощущения, что я не смог понять, как работает UIImagePickerController, но документы не слишком полезны:
e.g.:
"Вы можете предоставить настраиваемый вид наложения для отображения настраиваемого интерфейса для создания изображений, и вы можете инициировать съемку изображений из своего кода. Пользовательское представление наложения может отображаться в дополнение к элементам управления по умолчанию, предоставляемым изображением, или вместо них. интерфейс выбора ".
или из showCameraControls:
«Если вы установите для этого свойства значение NO и предоставите свои собственные настраиваемые элементы управления, вы можете сделать несколько снимков, прежде чем закрыть интерфейс выбора изображений». - Как мне закрыть интерфейс выбора?
Примечание: делегат правильно настроен в IB, так что проблема не в этом.
Спасибо за любую помощь, которую вы можете оказать!