2015-04-14 2 views
0

Я использую пользовательскую камеру с помощью UIImagePickerController. Я подклассифицирую класс UIImagePickerController и используя без него/увольнения. Мы просто открываем настройку камеры и фотографируем. Через некоторое время нажав кнопку камеры, вызывается метод takepicture, и приложение получает сбой. Во время этого вызова метод делегата не вызывался. Мой код заключается в следующем:авария uiimagepicker при вызове метода takepicture

-(void)viewDidLoad 
{ 
    if([UIImagePickerController isCameraDeviceAvailable:UIImagePickerControllerCameraDeviceRear] && self.camType==2) 
    { 
     self.sourceType=UIImagePickerControllerSourceTypeCamera; 
     self.cameraDevice=UIImagePickerControllerCameraDeviceRear; 
     self.showsCameraControls = NO; 
     self.wantsFullScreenLayout=NO; 
     self.navigationBar.hidden=NO; 
     self.cameraOverlayView = mainView; 

     } 
    } 
    else 
    { 
     self.navigationBar.hidden=YES; 
     self.sourceType=UIImagePickerControllerSourceTypePhotoLibrary; 
     [notAllowBtn setHidden:TRUE]; 
     [cmView setHidden:TRUE]; 
    } 

    self.delegate=self; 
    [self.view addSubview:cmView]; 
} 

-(void)cameraTakePic { 

    if([UIImagePickerController isCameraDeviceAvailable:UIImagePickerControllerCameraDeviceRear]) { 
     [self takePicture]; 
    } 
} 


- (void)imagePickerController:(UIImagePickerController*)picker didFinishPickingMediaWithInfo:(NSDictionary*)info{ 
    if (![info objectForKey:@"UIImagePickerControllerOriginalImage"]) { 

     NSArray *arr=[[appDel navController] viewControllers]; 
     id obj=[arr lastObject]; 
     UIViewController *objContr=((UIViewController *)obj); 

     objContr.navigationController.navigationBar.userInteractionEnabled = YES; 

     [clickBtn setEnabled:YES]; 

     return; 
    } 


    UIImage* image = nil; 
    UIImage *imageTemp = [info objectForKey:@"UIImagePickerControllerOriginalImage"]; 
} 
+1

Какое исключение оно показывает, когда оно разбилось? – Karthi

+0

исключение: setObjectForKey: объект не может быть nil (ключ: UIImagePickerControllerOriginalImage) – vishwaroopa

ответ

1

Из справки UIImagePickerController класса Apple:

Класс UIImagePickerController поддерживает только портретный режим. Этот класс предназначен для использования как есть и не поддерживает подклассы. Иерархия представления для этого класса является частной и не должна быть изменена, за одним исключением. Вы можете назначить произвольное представление объекту камерыOverlayView и использовать это представление для представления дополнительной информации или управления взаимодействием между интерфейсом камеры и вашим кодом.

Вы не должны подклассифицировать класс UIImagePickerController, вместо этого вы должны использовать AVFoundation и создать свои собственные методы захвата.

+0

да, мы назначаем пользовательский просмотр камеры. Я не могу понять, почему это краш-код после многого использования не часто. – vishwaroopa

+0

Но вы все еще подклассифицируете 'UIImagePickerController'. Это не сработает. – Schemetrical

+0

предложите что-то, чтобы преодолеть этот вопрос. – vishwaroopa

Смежные вопросы