2017-10-11 8 views
0

여기에 문제가 있습니다. "WelcomeScreen"과 "FailScreen"과 같은 두 가지 UIViewController가 있습니다. 처음에 카메라 액세스 요청이 있습니다. 사용자가 "허용 안 함"을 선택하면 FailScreen이 열립니다. ... 그리고 충돌.Swift : 카메라 액세스 요청 후 다른보기 컨트롤러로 전환 할 때 충돌이 발생합니다.

코드 :

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) 
     } 

콘솔 : 다른의 ViewController에

Camera access denied. 
libc++abi.dylib: terminating with uncaught exception of type NSException 
  • 전환 (오른쪽 옆에 카메라 액세스 요청에) 알림 신청 후 같은 방법으로 충돌합니다.
  • 나는 멍청이다. :)
  • 나는 현재 (VC), 쇼 (VC), 푸시 (VC)를 시도. 결과는 동일합니다.
  • 스토리 보드를 사용하지 않습니다. 나는 프로그래밍으로 모든 것을 다한다.
  • 예, 동일한 ViewController에서 FailScreen을 표시 할 수 있지만이 오류를 피하기 위해 다른 옵션은 어떻게됩니까?

누군가가 해결 방법을 말해 줄 수 있습니까? 고맙습니다.

답변

0

이 정보가 도움이되기를 바랍니다.

먼저 당신의 Info.plist에서 Privacy - Camera Usage Description 키 값을 추가하고 코드 아래 이해해야합니다

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

"카메라 사용 설명"키를 전 하였다. 문제는 거기 있지 않습니다. –

+0

알았어요! 대단히 감사합니다! –

+0

그것의 나의 쾌락 선생님. – Zee