UIImagePickerController takePicture не вызывает какой-либо метод делегата

Я создаю образец приложения, которое позволяет использовать для захвата изображения и записи видео с помощью настраиваемых кнопок. Я создал экземпляр контроллера UIImagePicker и назначил делегата, и все готово, но takePicture не вызывает метод делегата.

Я также ссылаюсь на несколько сообщений UIImagePickerController takePicture не отвечает и UIImagepickerController [takepicture] модальное представление исчезает без обратного вызова делегата, но мое решение не предоставляется.

Вот мой код. Пожалуйста, дайте мне знать, если мне что-то не хватает:

- (void)viewDidLoad {
[super viewDidLoad];

self.navigationController.navigationBar.hidden = YES;
imagePicker = [[UIImagePickerController alloc] init];
[imagePicker setSourceType:UIImagePickerControllerSourceTypeCamera];
[imagePicker setAllowsEditing:NO];

[imagePicker setMediaTypes:[NSArray arrayWithObject:@"public.movie"]];
[imagePicker setCameraCaptureMode:UIImagePickerControllerCameraCaptureModeVideo];

[imagePicker setShowsCameraControls:NO];
[imagePicker setToolbarHidden:YES];
[imagePicker setDelegate:self];
UIView *overlayView = [[UIView alloc] initWithFrame:[[imagePicker view]frame]];
[overlayView setBackgroundColor:[UIColor clearColor]];

UIButton *btnCapture = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[btnCapture setFrame:CGRectMake(0, overlayView.frame.origin.y + overlayView.frame.size.height - 35, 30, 30)];
[btnCapture setTitle:@"c" forState:UIControlStateNormal];
[btnCapture addTarget:self action:@selector(captureFrame:) forControlEvents:UIControlEventTouchUpInside];

UIButton *btnStopVideo = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[btnStopVideo setFrame:CGRectMake(40, overlayView.frame.origin.y + overlayView.frame.size.height - 35, 30, 30)];
[btnStopVideo setTitle:@"s" forState:UIControlStateNormal];
[btnStopVideo addTarget:self action:@selector(btnStopTapped:) forControlEvents:UIControlEventTouchUpInside];

[overlayView addSubview:btnStopVideo];
[overlayView addSubview:btnCapture];
[imagePicker setCameraOverlayView:overlayView];

[self presentModalViewController:imagePicker animated:NO];



}

- (void)captureFrame:(id)sender {
[imagePicker takePicture];
}  

Но метод делегирования: - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info не вызывается.

Пожалуйста, помогите мне решить эту проблему.

Спасибо всем


person Kapil Choubisa    schedule 06.01.2012    source источник


Ответы (3)


Просто добавьте эту строку

    picker.showsCameraControls = NO;
person SMear_JD    schedule 28.02.2012

Вам нужно убедиться, что вы реализуете протокол UIImagePickerControllerDelegate в своем заголовке.

.h

@interface MyViewController <UIImagePickerControllerDelegate>
{
    // 
}

@end
person WrightsCS    schedule 28.02.2012
comment
разве вы не имеете в виду UIImagePickerControllerDelegate - person Codezy; 11.10.2013

Вам лучше проверить, остается ли ваш UIImagePickerController.delegate вашим контроллером.

person nullLululi    schedule 03.06.2016