Semblable à
Erreur de découverte PhotoPicker: Domaine d'erreur = Code PlugInKit = 13
et aussi à
https://forums.developer.Apple.com/thread/82105
MAIS j'ai essayé toutes ces suggestions et j'obtiens toujours une erreur dans le journal de débogage. Exécution de Swift 4 XCode 9A235
Ce qui a été suggéré aux différents endroits était ...
DID Je ne reçois pas ce problème dans Swift 3 - xcode précédent . Mais avec Swift 4, j’ai essayé tout ce que j’ai vu suggéré et j’obtiens toujours l’erreur suivante.
[découverte] erreurs rencontrées lors de la découverte d'extensions: Domaine d'erreur = Code PlugInKit = 13 "requête annulée" UserInfo = {NSLocalizedDescription = requête annulée}
Le sélecteur fonctionne correctement et je sélectionne une image à partir de photos, mais je reçois ce message d'erreur à la sortie du sélecteur (annuler ou sélectionner), à chaque fois ...
Des suggestions pour arrêter le message d'erreur? Autre que la liste des éléments proposés aux deux autres liens (résumés ci-dessus)
ma méthode
@objc internal func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
imageSelected = nil
if let editedImage = info["UIImagePickerControllerEditedImage"] as? UIImage {
imageSelected = editedImage
} else if let originalImage = info["UIImagePickerControllerOriginalImage"] as? UIImage {
imageSelected = originalImage
}
if imageSelected != nil {
handleSelectedImage() // override in subclass to do something with the returned image
}
picker.dismiss(animated: true, completion: nil) // mess of calling both dismiss to see if it helps - it does not
dismiss(animated: true, completion: nil)
}
voir dans mc-system-group-container-and-mc-reading-from-public-effect-user-settings-err
Le travail est bien pour moi
si cela peut aider ci-dessous mon code (travailler avec xcode 9)
if libraryAuthorization == .authorized {
let imagePicker = UIImagePickerController()
imagePicker.delegate = self
imagePicker.sourceType = UIImagePickerControllerSourceType.photoLibrary
imagePicker.allowsEditing = false
imagePicker.view.tag = button.tag
self.present(imagePicker, animated: true, completion: nil)
}
}
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
if let pickerImage = info[UIImagePickerControllerOriginalImage] as? UIImage {
photoContainer.addImageToButton(pickerImage, buttonTag: picker.view.tag)
dismiss(animated: true)
}
}
J'avais le même problème et j'essayais toutes les solutions que je pouvais trouver, mais rien n'y faisait. Je me suis juste demandé ce qui pouvait arriver au délégué de ne pas être déclenché: désallocation du délégué!
Et c'était ça dans mon cas! Lors de la présentation de UIImagePickerController, mon instance de class ImagePickerController : NSObject, UIImagePickerControllerDelegate, UINavigationControllerDelegate
, Qui n'est pas le contrôleur de présentation, est désallouée directement. Bien sûr, les fonctions de délégué ne peuvent plus être exécutées.
Il suffit de mettre un point d'arrêt dans deinit
(ou dealloc
dans le monde Objective-C) et de voir si votre délégué est en cours de désallocation.
L'utilisateur demande: "* Des suggestions sur la manière d'arrêter le message d'erreur? Autre que la liste des éléments proposés sur les deux autres liens (récapitulés ci-dessus)".
J'ai utilisé deux étapes pour éliminer le message d'erreur . Félicitations à la personne située au-dessus de Antoine Richeux https://stackoverflow.com/users/5767821/antoine-richeux .
Je pense que l’ajout de Privacy à pList n’est peut-être pas nécessaire, du moins dans mon cas
STEP 1.Dans la barre de menus, sélectionnez: Produit> Schéma> Modifier le schéma> Sélectionnez Exécuter dans la liste de gauche de Build, Run ... ArchiveSelect Arguments. en haut à droite des sélections - voir l'image ci-jointe .. Utilisez le bouton + sous Variables d'environnement pour ajouter une nouvelle entréeNom: OS_ACTIVITY_MODE Valeur: désactiver
Ceci montre où ajouter la variable d'environnement
STEP 2. Nettoyer le projet et reconstruire
Pouvez-vous l'essayer?
extension YourProfileViewController: UIImagePickerControllerDelegate, UINavigationControllerDelegate {
func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {
dismiss(animated: true, completion: nil)
}
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
log.debug("Called imagePickerController function ")
let image = info[UIImagePickerControllerOriginalImage] as? UIImage
self.dismiss(animated: true) {
self.yourProfileImageView.image = image
}
}
}
En effet, votre application utilise une bibliothèque de photos (dans ce cas, en utilisant UIImagePickerController
) sans demander la permission de l'utilisateur. Par exemple, si je veux afficher le sélecteur d'images lorsque le bouton Ajouter a été activé:
@IBAction func addButtonTapped(_ sender: UIBarButtonItem) {
checkPermission {
let picker = UIImagePickerController()
picker.sourceType = .photoLibrary
picker.mediaTypes = UIImagePickerController.availableMediaTypes(for: .photoLibrary)!
picker.delegate = self
picker.allowsEditing = false
self.present(picker, animated: true, completion: nil)
}
}
func checkPermission(hanler: @escaping () -> Void) {
let photoAuthorizationStatus = PHPhotoLibrary.authorizationStatus()
switch photoAuthorizationStatus {
case .authorized:
// Access is already granted by user
hanler()
case .notDetermined:
PHPhotoLibrary.requestAuthorization { (newStatus) in
if newStatus == PHAuthorizationStatus.authorized {
// Access is granted by user
hanler()
}
}
default:
print("Error: no access to photo album.")
}
}
En outre, vous devez également ajouter ceci à votre plist:
<key>NSPhotoLibraryUsageDescription</key>
<string>So that you can add images for your cloth. </string>
qui est le message affiché dans la boîte de dialogue d'autorisation.
J'ai aussi eu ce problème. C'est très gênant parce que l'erreur de la console survient mais l'application continue de charger l'image. J'ai demandé le statut d'autorisation, ajouté mes clés au fichier .plst, mais je n'ai rien trouvé pour faire le travail.
Une fois que je suis allé dans Produit -> Schéma -> Éditer le schéma -> Exécuter puis clé ajoutée: " OS_ACTIVITY_MODE " valeur: " disable ", nettoyé et reconstruit ... l'erreur disparut .
Pour Swift 4:
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
guard let pickedImage = info[UIImagePickerController.InfoKey.originalImage] as? UIImage else {
return
}
...
}
[String: Any]
à [UIImagePickerController.InfoKey : Any]
info["UIImagePickerControllerOriginalImage"]
à info[UIImagePickerController.InfoKey.originalImage]
Avait ce même problème sur Swift 4.2 et Xcode 10.0 . Bien que le sélecteur d'images fonctionne correctement, Xcode a affiché cette erreur sur la console. Pour se débarrasser de cela:
Assurez-vous de déclarer que votre classe implémente UINavigationControllerDelegate
.
extension MyViewController: UINavigationControllerDelegate {}
Pour une raison quelconque dans Xcode 9.0, il m'a averti de déclarer le délégué en tant que tel:
imagePicker.delegate = self as? UIImagePickerControllerDelegate & UINavigationControllerDelegate