2012-04-10 6 views
1

У меня возникла неудобная проблема с использованием камеры ios из листа действий: когда пользователь прикасается к «кнопке изображения», панель действий отображается с двумя вариантами (чтобы использовать фотографию из библиотеки фотографий или сделать снимок с помощью камеры).iPhone-камера не отображается

Какой бы вариант я ни выбрал, ничего не происходит, но когда я снова выбираю тип носителя, он работает.

Беллоу мой код:

- (IBAction)selectMediaType: (id)sender { 
    [appDelegate hideTabBar]; 
    UIActionSheet *action = [[UIActionSheet alloc] 
          initWithTitle: nil 
          delegate:self 
          cancelButtonTitle:@"Fechar" 
          destructiveButtonTitle: nil 
          otherButtonTitles:@"Galeria", @"Tirar Foto", nil]; 

    [action showFromTabBar: appDelegate.tabController.tabBar]; 
} 


- (void) actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex { 
    if (buttonIndex == 0) { 
     UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init]; 
     NSArray *mediaTypes = [NSArray arrayWithObjects:(NSString *)kUTTypeImage, nil]; 

     imagePicker.delegate = self; 
     imagePicker.hidesBottomBarWhenPushed = YES; 
     imagePicker.mediaTypes = mediaTypes; 
     imagePicker.allowsEditing = NO; 
     imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; 

     [self presentModalViewController:imagePicker animated:YES]; 
     imagePicker.hidesBottomBarWhenPushed = YES; 
    } else if (buttonIndex == 1) { 
     if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) { 
      UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init]; 
      NSArray *mediaTypes = [NSArray arrayWithObjects:(NSString *)kUTTypeImage, nil]; 

      imagePicker.delegate = self; 
      imagePicker.mediaTypes = mediaTypes; 
      imagePicker.allowsEditing = YES; 
      imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera; 
      imagePicker.cameraCaptureMode = UIImagePickerControllerCameraCaptureModePhoto; 

      [self presentModalViewController:imagePicker animated:YES]; 
     } else { 
      UIAlertView *alert = [[UIAlertView alloc] 
            initWithTitle:@"" 
            message:@"Your device does not support this feature!" 
            delegate:self 
            cancelButtonTitle:@"OK" 
            otherButtonTitles: nil]; 
      [alert show]; 
      [alert release]; 

     } 
    } else { 
     [appDelegate showTabBar]; 
    } 
} 



- (void) imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info { 
    UIImage *image; 
    NSURL *mediaURL; 

    mediaURL = (NSURL *) [info valueForKey:UIImagePickerControllerMediaURL]; 

    if (mediaURL == nil) { 
     image = (UIImage *) [info valueForKey:UIImagePickerControllerOriginalImage]; 
    } 

    imageView.image = image; 

    [picker dismissModalViewControllerAnimated:YES]; 

    [appDelegate showTabBar]; 
} 

- (void) imagePickerControllerDidCancel:(UIImagePickerController *)picker { 

    [picker dismissModalViewControllerAnimated:YES]; 

    [appDelegate showTabBar]; 
} 

Может кто-нибудь помочь мне с этим?

Спасибо.

ответ

1

У меня есть.

В основном это проблема с утечкой памяти: я переключил представления, добавляя subviews в супер-представлении (не в текущем виде), но я не удалял старый из супер-представления, поэтому я получил утечку памяти;)

Смежные вопросы