#swift #uiimagepickercontroller
#swift #uiimagepickercontroller
Вопрос:
Мой код здесь
@IBAction func openVideo(_ sender: Any) {
//selectVideo(delegate: self, sourceType: .savedPhotosAlbum)
let mediaUI = UIImagePickerController()
mediaUI.sourceType = .savedPhotosAlbum
mediaUI.mediaTypes = [kUTTypeMovie as String]
mediaUI.allowsEditing = true
mediaUI.delegate = self
self.present(mediaUI, animated: true, completion: nil)
}
В этой части я выбираю видео.
extension ViewController: UIImagePickerControllerDelegate, UINavigationControllerDelegate {
func processVideo(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey: Any]){
let url = info[UIImagePickerController.InfoKey.mediaURL] as! URL
print("hey")
self.dismiss(animated: true) {
let player = AVPlayer(url: url)
let vcPlayer = AVPlayerViewController()
vcPlayer.player = player
self.present(vcPlayer, animated: true, completion: nil)
}
}
}
Что я делаю не так?
Я не могу получить какую-либо печать в функции processVideo. Я получаю эту ошибку после выбора видео из галереи.
"Error returned from daemon: Error Domain=com.apple.accounts Code=7 "(null)""
Ответ №1:
Вам нужно установить для таких настроек, как this или in plist.
switch AVCaptureDevice.authorizationStatus(for: .video) {
case .authorized: // The user has previously granted access to the camera.
self.setupCaptureSession()
case .notDetermined: // The user has not yet been asked for camera access.
AVCaptureDevice.requestAccess(for: .video) { granted in
if granted {
self.setupCaptureSession()
}
}
case .denied: // The user has previously denied access.
return
case .restricted: // The user can't grant access due to restrictions.
return
}
Комментарии:
1. Я установил plist для запроса разрешения камеры и для галереи раньше. Я записываю фильм и сохраняю его. Но когда я пытаюсь выбрать что-то из галереи, ничего не получается. Я больше не получаю сообщение об ошибке, не знаю почему.
Ответ №2:
Решена проблема путем изменения имени функции processvideo на imagePickerController. Похоже, что имя очень важно при делегировании функций. Я этого не заметил.
Совет для создания этой функции делегирования напишите didfinish, и вы получите предпочитаемую функцию с именем imagePickerController, используйте ее.