Я пытаюсь использовать интерфейс 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];
}
В оверлейном просмотре мне удалось принудительно запустить метод takePicture UIImagePickerController (я знаю это, потому что я могу NSLog его, и я слышу звук камеры, делающей снимок). OverlayView показывает просто отлично. Однако метод делегата didFinishPickingMediaWithInfo: никогда не вызывается, и imagePickerControllerDidCancel также не вызывается.
Итак, как мне получить методы делегата для вызова или сохранить картинку, переопределив метод takePicture? (Я понятия не имею, как захватить данные изображения здесь, и Google, кажется, подвел меня). Я не могу удержаться от ощущения, что мне не удалось понять, как работает UIImagePickerController, но документы не слишком полезны:
например:.
"Вы можете предоставить настраиваемый вид наложения для отображения пользовательского интерфейса для фотосъемки, а также можете инициировать съемку изображений из своего кода. Ваш настраиваемый вид наложения может отображаться в дополнение или вместо стандартных элементов управления по умолчанию по интерфейсу средства выбора изображений. "
или из showCameraControls:
"Если вы установите для этого свойства значение NO и предоставите свои собственные элементы управления, вы можете сделать несколько снимков, прежде чем отключить интерфейс средства выбора изображений." - Как я могу отклонить интерфейс выбора?
Примечание: делегат правильно установлен в IB, так что это не проблема.
Спасибо за любую помощь, которую вы можете оказать!