2014-09-18 1 views
0

На прошивке 6.1, я отображающий UIImagePickerController покадрово в одной закладке в UITabBar.IOS 6,1 - Как реализовать imagePickerControllerDidCancel для покадрова UIImagePickerController

В моем INIT:

self.picker = [[UIImagePickerController alloc] init]; 
self.picker.sourceType = UIImagePickerControllerSourceTypeCamera; 
self.picker.mediaTypes = [UIImagePickerController availableMediaTypesForSourceType:UIImagePickerControllerSourceTypeCamera]; 
self.picker.delegate = self; 
self.picker.allowsEditing = NO; 
[self.view addSubview:self.picker.view]; 

Я реализованный:

- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker 
{ 
    return; 
} 

Так как я никогда не называл:

[picker presentViewController:(UIViewController *) animated:(BOOL) completion:^(void)completion]; 

мне не нужно позвонить:

[picker dismissViewControllerAnimated:NO completion:nil]; 

Но, когда я нажмите Отмена кнопки Отмена кнопка неактивна и UIImagePickerController кажется запереть. Некоторые из элементов управления работают, например, переключатель изображения/видео и кнопка обратной камеры, но кнопка для съемки заморожена.

Если я перехожу на другую вкладку и вернусь на вкладку «Камера», UIImagePickerController сбрасывается и снова прекращается. Единственным кодом, выполненным в этом случае, является viewWillAppear и viewDidAppear, который не должен иметь ничего общего с этой ситуацией.

На прошивкой 7, ничего не блокируется при нажатии кнопки Отмена.

Поскольку UIImagePickerController всегда отображается на вкладке, я на самом деле не имеют необходимости кнопки отмены, так как бы я ни:

  • Скрыть или отключить Отмена кнопку
  • Реализовать imagePickerControllerDidCancel так вещи не запирать
+0

Хм, думаю, что я должен смотреть в используя оверлей. – GRW

ответ

0

Реализован режим наложения камеры, и все работает нормально.

self.picker = [[UIImagePickerController alloc] init]; 
    self.picker.sourceType = UIImagePickerControllerSourceTypeCamera; 
    self.picker.mediaTypes = [UIImagePickerController availableMediaTypesForSourceType:UIImagePickerControllerSourceTypeCamera]; 
    self.picker.delegate = self; 
    self.picker.allowsEditing = NO; 
    self.picker.showsCameraControls = NO; 

    UIView *clearView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)]; 
    clearView.opaque = NO; 
    clearView.backgroundColor = [UIColor clearColor]; 

    UIToolbar *toolBar=[[UIToolbar alloc] initWithFrame:CGRectMake(0, self.view.frame.size.height-self.tabBarController.tabBar.frame.size.height-55, self.view.frame.size.width, 55)]; 
    toolBar.barStyle = UIBarStyleBlackOpaque; 
    NSArray *items=[NSArray arrayWithObjects: 
        [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil], 
        [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCamera target:self action:@selector(takePicture)], 
        [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil], 
        nil]; 
    [toolBar setItems:items]; 

    UIView *overlayView = [[UIView alloc] initWithFrame:self.view.bounds]; 
    [overlayView addSubview:clearView]; 
    [overlayView addSubview:toolBar]; 

    [self.picker setCameraOverlayView:overlayView]; 

    [self.view addSubview:self.picker.view]; 

[[UIBarButtonItem Alloc] ... Действие: @selector (takePicture)],

- (void)takePicture 
{ 
    [self.picker takePicture]; // triggers didFinishPickingMediaWithInfo 
} 

UIImagePickerControllerDelegate

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info 
{ 
    UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage]; 
    if (image != nil) 
    { 
     UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil); 
    } 
} 
Смежные вопросы