2017-10-11 4 views
0

Voici le problème: Il existe deux UIViewControllers: "WelcomeScreen" et, par exemple, "FailScreen". Il existe une demande d'accès à la caméra sur le premier. L'utilisateur appuie sur "Ne pas autoriser" et FailScreen s'ouvre. ... Et des accidents.Swift: Crashing avec la transition vers un autre contrôleur de vue après la demande d'accès à la caméra

code:

AVCaptureDevice.requestAccess(for: .video) { (answer: Bool) in 
     print("Camera access request.") 
     if answer { 
      print("Camera access autorized.") 
      // Continue to Notifications Request... 
     } 
     else { 
      print("Camera access denied.") 
      self.present(FailureViewController(), animated: true, completion: nil) 
     } 

Console:

Camera access denied. 
libc++abi.dylib: terminating with uncaught exception of type NSException 
  • transition vers d'autres ViewController plante de la même manière après Notifications demande (juste à côté de l'accès caméra demande).
  • Je suis Noob. :)
  • J'ai essayé présent (VC), show (VC), push (VC). Le résultat est le même.
  • Je n'utilise pas Storyboards. Je fais tout par programme.
  • Oui, je peux afficher FailScreen sur le même ViewController, mais qu'en est-il des autres options pour éviter cette erreur?

Est-ce que quelqu'un peut me dire comment y remédier? Je vous remercie.

Répondre

0

J'espère que cela va vous aider.

D'abord, vous devez valeur ajoutée pour Privacy - Camera Usage Description clé dans Info.plist et comprendre le code ci-dessous

AVCaptureDevice.requestAccess(forMediaType: AVMediaTypeVideo, completionHandler: { (success) in 

      if success { 
       print("The user granted permission") 

      } else { 
       print("put up an alert telling the user the camera is not available") 

       DispatchQueue.main.async(execute: {() -> Void in 
        let ac = UIAlertController(title: "Camera Error", message: "For some reason, the camera in this device is not accepting your authorization. Check with your device supplier.", preferredStyle: .alert) 
        ac.addAction(UIAlertAction(title: "Ok", style: .default, handler: nil)) 
        self.present(ac, animated: true, completion: nil) 
       })//back on main queue block 
      }//if success 

     })//requestAccessForMediaType block 


    }//switch 

} else {//if device has a camera 

    let ac = UIAlertController(title: "Source not available.", message: "The camera is not available.", preferredStyle: .alert) 
    ac.addAction(UIAlertAction(title: "Ok", style: .default, handler: nil)) 
    present(ac, animated: true, completion: nil) 

}//if camera is no else 

} 
+0

clé « Description de l'utilisation de l'appareil photo » a été ajouté avant. Le problème n'est pas là. –

+0

Je l'ai eu! Merci beaucoup! –

+0

C'est mon plaisir monsieur. – Zee