Обновление:
На этот вопрос ответили. Это была моя собственная глупость, возможно, не стоит больше читать этот вопрос. лол.
Вопрос:
Правильно, поэтому у меня есть этот подкласс UIViewController (master), у него есть UIImagepickerController (камера), у него также есть UIView (overlayView). Мастер настраивает камеру для настройки в качестве камеры только с пользовательским оверлеем cameraOver, скрывая пользовательские элементы управления e.t.c.
Кажется, что все работает нормально, кроме случаев, когда я пытаюсь программно сделать снимок. Что происходит, так это то, что overlayView вызывает мастер, и это запускает съемку, затем я слышу звук затвора, и радужная оболочка закрывается, камера, кажется, отключает себя (я демонстративно не делаю этого в моем коде), а затем вызывается мой viewDidAppear опять мой хозяин
Кто-нибудь знает, что происходит?
-(void)viewDidLoad
{
NSLog(@"loading the view");
//if the camera is on the device
if ( [UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera])
{
//make one
camera = [[UIImagePickerController alloc] init];
//setup some settings that we need
camera.sourceType = UIImagePickerControllerSourceTypeCamera;
camera.showsCameraControls = NO;
camera.navigationBarHidden = NO;
camera.toolbarHidden = YES;
camera.cameraViewTransform = CGAffineTransformScale(camera.cameraViewTransform, 1.03, 1.03);
//show it
overlayView = [[OverlayView alloc] initWithFrame:CGRectMake(0,0,320,480) withDelegate:self andController:self];
camera.cameraOverlayView = overlayView;
camerashowing=NO;
}
else
{
alert = [[UIAlertView alloc] initWithTitle:@"No Camera Detected" message:@"The camera is broken or your device has no camera. Please close the application" delegate:self cancelButtonTitle:nil otherButtonTitles:nil, nil];
[alert show];
[alert release];
}
}
-(void)viewDidAppear:(BOOL)animated
{
if (!cameraShowing)
{
NSLog(@"going to show camera");
[self presentModalViewController:camera animated:NO];
camerashowing = YES;
}
}
-(void)releaseShutter
{
[overlayView toolbarShowWarning];
NSLog(@"going to show camera: %@", self);
[camera takePicture];
}
После некоторой помощи от людей в ответах я могу сказать, что камера не выпускается.
Мне также удалось остановить exec_bad_access, не давая ему повторно вызывать [presentmodal ....], проверяя значение bool в методе viewDidAppear.
У меня все еще есть проблема, когда модальное представление исчезает, любая помощь, снова lol ??