2016-09-19 18 views
5

Próbuję przedstawić UIImagePickerController za pomocą akcji przycisku. Mój projekt ulega awarii z powodu błędu:Przedstawianie UIImagePickerController awarii aplikacji

Got a SIGABRT while executing native code. This usually indicates a fatal error in the mono runtime or one of the native libraries used by your application.

Mam tylko ViewController osadzony w NavigationController w serii ujęć. Fragmenty kodu poniżej:

UIImagePickerController imagePicker; 

public override void ViewDidLoad() 
{ 
    base.ViewDidLoad(); 

    this.setupImagePicker(); 

    CapturePhotoButton.TouchUpInside += delegate 
    { 
     this.AddMedia(); 
    }; 
} 

public void setupImagePicker() 
{ 
    imagePicker = new UIImagePickerController(); 
    imagePicker.SourceType = UIImagePickerControllerSourceType.Camera; 
    imagePicker.ModalPresentationStyle = UIModalPresentationStyle.Popover; 
    imagePicker.MediaTypes = UIImagePickerController.AvailableMediaTypes(
     UIImagePickerControllerSourceType.Camera); 
    imagePicker.FinishedPickingMedia += HandleFinishedPickingMedia; 
    imagePicker.Canceled += (sender, e) => { 
     imagePicker.DismissModalViewController(true); 
    }; 
} 

public void HandleFinishedPickingMedia(object sender, 
    UIImagePickerMediaPickedEventArgs e) 
{ 
    bool isImage = false; 

    switch (e.Info[UIImagePickerController.MediaType].ToString()) 
    { 
     case "public.image": 
      isImage = true; 
      break; 
     case "public.video": 
      break; 
    } 

    if (isImage) 
    { 
     UIImage originalImage = e.Info[UIImagePickerController.OriginalImage] as UIImage; 
     if (originalImage != null) 
     { 
      PreviewImageView.Image = originalImage; 
      imagePicker.DismissViewController(true, null); 
     } 
    } 
} 

public void AddMedia() 
{ 
    //Crashes on this line 
    this.NavigationController.PresentViewController(imagePicker, true, null); 
} 
+0

Czy sam ViewController nie ma metody PresentViewController? Czy możesz spróbować użyć tego, aby sprawdzić, czy to nie ma znaczenia? 'this.PresentViewController (imagePicker, true, null);' – Cheesebaron

+0

również to wypróbował i nadal zawiesza się podczas prezentacji – DrPatience

+0

Czy też to zrobiłeś? @Cheesebaron – DrPatience

Odpowiedz

3

Dodano prywatności - Kamera Wykorzystanie Opis do Info.plist i że problem został rozwiązany

+0

Dokładny problem, który rozwiązał. Jestem zaskoczony, że analiza aplikacji Connect Connect w iTunes Connect tego nie zauważa. Dziękuję Ci! – JHawkZZ

2

dodać następujące do Info.plist dla aparatu:

<key>NSCameraUsageDescription</key> 
<string>This app needs access to the camera to take photos.</string> 

dla biblioteki:

<key>NSPhotoLibraryUsageDescription</key> 
<string>This app needs access to photos.</string> 
Powiązane problemy