UIImagePickerController startVideoCapture с пользовательским наложением

Я использую UIImagePickerController с пользовательским наложением для записи видео в моем приложении. Для реализации UIImagePickerController я использовал код изотличный учебник Рэя Вендерлиха.

Я спрятал элементы управления для камеры и создал простой пользовательский вид наложения. Это сработало и загружается нормально. Затем я создал панель инструментов и кнопки для просмотра, чтобы записать видео:

- (BOOL) startCameraControllerFromViewController: (UIViewController*) controller
                               usingDelegate: (id <UIImagePickerControllerDelegate,
                                               UINavigationControllerDelegate>) delegate {

if (([UIImagePickerController isSourceTypeAvailable:
      UIImagePickerControllerSourceTypeCamera] == NO)
    || (delegate == nil)
    || (controller == nil))
    return NO;


UIImagePickerController *cameraUI = [[UIImagePickerController alloc] init];
cameraUI.sourceType = UIImagePickerControllerSourceTypeCamera;

// Displays a control that allows the user to choose movie capture
cameraUI.mediaTypes = [[NSArray alloc] initWithObjects: (NSString *) kUTTypeMovie, nil];

// Hides the controls for moving & scaling pictures, or for
// trimming movies. To instead show the controls, use YES.
cameraUI.allowsEditing = NO;

cameraUI.delegate = delegate;

//Overlay view and toolbar setup 
// creating overlayView
UIView* overlayView = [[UIView alloc] initWithFrame:cameraUI.view.frame];
// letting png transparency be
float width = 320;
float AR = (4.0/3.0);

float toolbar_height = 480 - (AR*width);


UIToolbar *toolBar=[[UIToolbar alloc]initWithFrame:CGRectMake(0, (AR*width), 320, toolbar_height)];
//toolBar.tintColor = [UIColor colorWithRed:(252/255.) green:(0/255.) blue:(48/255.) alpha:1];
toolBar.tintColor = [UIColor colorWithRed:(49/255.) green:(52/255.) blue:(49/255.) alpha:1];


UIBarButtonItem *flexibleSpace = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];
UIBarButtonItem *RecordBarButtonItem = [[UIBarButtonItem alloc ] initWithBarButtonSystemItem:UIBarButtonSystemItemCamera target:self action:@selector(recordPressed:)];
UIBarButtonItem *CancelBarButtonItem = [[UIBarButtonItem alloc ] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self action:@selector(imagePickerControllerDidCancel:)];
NSArray *buttons = [NSArray arrayWithObjects: CancelBarButtonItem, flexibleSpace, RecordBarButtonItem, flexibleSpace, nil];
[toolBar setItems: buttons animated:NO];

[overlayView addSubview:toolBar];
[overlayView.layer setOpaque:NO];
overlayView.opaque = NO;

cameraUI.showsCameraControls = NO;
cameraUI.cameraOverlayView = overlayView;

[controller presentViewController: cameraUI animated: YES completion:nil];
return YES;
}

Моя кнопкаrecordBarButtonItem звонкиrecordPressed который дается:

- (void) recordPressed: (UIImagePickerController *) picker {
NSLog(@"lets record");
[picker startVideoCapture]; 
}

Поэтому в журнале появляется сообщение «Давайте запись», но я получаю сообщение об ошибке NSInvalidArgumentException для startVideoCapture. Я знаю, что что-то явно не так с тем, как я пытаюсь начать захват видео нажатием кнопки, но я не могу понять это. Все еще довольно новичок в iOS, так что простите, если решение простое! Ура, Майк

Ответы на вопрос(2)

Ваш ответ на вопрос