UIImagePickerController takePicture не вызывает метод делегата - PullRequest
2 голосов
/ 06 января 2012

Я создаю пример приложения, которое позволяет использовать для захвата изображения и записи видео с помощью пользовательских кнопок.Я создал экземпляр контроллера 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 не вызывается.

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

Спасибо всем

Ответы [ 3 ]

3 голосов
/ 28 февраля 2012

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

    picker.showsCameraControls = NO;
0 голосов
/ 03 июня 2016

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

0 голосов
/ 28 февраля 2012

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

.h

@interface MyViewController <UIImagePickerControllerDelegate>
{
    // 
}

@end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...