Dans iOS 8, je rencontre des problèmes pour capturer des images à partir de l'appareil photo.
UIImagePickerController *controller=[[UIImagePickerController alloc] init];
controller.videoQuality=UIImagePickerControllerQualityTypeMedium;
controller.delegate=(id)self;
controller.sourceType=UIImagePickerControllerSourceTypeCamera;
[self presentViewController:controller animated:YES completion:nil];
Mais dans iOS 8, je reçois ceci:
Snapshotting a view that has not been rendered results in an empty snapshot. Ensure your view has been rendered at least once before snapshotting or snapshot after screen updates.
J'ai essayé avec la solution fournie par This Post avec
@property (strong,nonatomic)UIImagePickerController *controller;
_controller=[[UIImagePickerController alloc] init];
_controller.videoQuality=UIImagePickerControllerQualityTypeMedium;
_controller.delegate=(id)self;
_controller.sourceType=UIImagePickerControllerSourceTypeCamera;
_[self presentViewController:controller animated:YES completion:nil];
et ça
...
controller.modalPresentationStyle=UIModalPresentationFullScreen;
or
controller.modalPresentationStyle=UIModalPresentationCurrentContext;
...
et ça
double delayInSeconds = 0.1;
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC);
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
[self presentViewController:controller animated:YES completion:nil];
});
et ça
[self presentViewController:controller animated:YES completion:NULL];
et ça
[self presentViewController:controller animated:YES completion:^{
}];
une idée?
objective-c
ios8
uiimagepickercontroller
souvickcse
la source
la source
dispatch_async(dispatch_get_main_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
que j'ai changé endispatch_async(dispatch_get_main_queue(), ^{
Réponses:
Je suis sûr que ce n'est qu'un bug dans iOS 8.0. Il est reproductible avec la plus simple des applications POC qui ne fait rien d'autre que d'essayer de présenter ce
UIImagePickerController
que vous faites ci-dessus. De plus, il n'y a pas de modèle alternatif à l'affichage du sélecteur d'image / caméra, à ma connaissance. Vous pouvez même télécharger l' exemple d'application Apple utilisant UIImagePickerController , l'exécuter et cela générera la même erreur hors de la boîte.Cela dit, la fonctionnalité fonctionne toujours pour moi. Outre l'avertissement / l'erreur, avez-vous des problèmes avec le fonctionnement de votre application?
la source
J'ai eu des problèmes avec ce problème pendant plusieurs heures, j'ai lu tous les sujets pertinents et j'ai découvert que l'erreur était due au fait que sous les paramètres de confidentialité de mon appareil, l'accès de la caméra à mon application était bloqué !!! Je n'ai jamais refusé l'accès à la caméra et je ne sais pas comment elle a été bloquée mais c'était le problème!
la source
Je n'ai pas assez de points de réputation pour commenter la réponse de @ greg ci-dessus, alors ajoutez mes observations ici. J'ai un projet Swift pour iPad et iPhone. J'ai une méthode à l'intérieur de mon contrôleur de vue principal (bit pertinent ci-dessous). Lorsque je teste cela sur un téléphone, tout fonctionne correctement et aucun avertissement n'est généré. Lorsque je l'exécute sur un iPad, tout fonctionne correctement, mais je vois l'avertissement concernant la capture instantanée de la vue. Cependant, le fait intéressant est que lorsque je cours sur un iPad sans utiliser le contrôleur popover, tout fonctionne correctement sans avertissement. Malheureusement, Apple exige que le sélecteur d'image soit utilisé dans un popover sur iPad, si l'appareil photo n'est pas utilisé.
la source
J'ai rencontré cela après avoir appelé UIImagePickerController presentViewController: du rappel à un délégué UIAlertView. J'ai résolu le problème en poussant le presentViewController: appelez la trace d'exécution actuelle en utilisant dispatch_async.
la source
J'ai eu ce problème lors de l'animation de certaines vues et l'application passait en mode arrière-plan et revenait. Je l'ai géré en définissant un indicateur isActive. Je l'ai réglé sur NON dans
et OUI dans
et animer ou non mes vues en conséquence. A pris soin de la question.
la source
J'ai eu cela avec une feuille UIAlertControllerStyleActionSheet donnant à l'utilisateur la possibilité de prendre une photo avec l'appareil photo ou d'en utiliser une de la bibliothèque.
J'ai essayé un point d'arrêt symbolique sur le message d'erreur
Cela m'a montré que l'erreur est produite par l'utilisation interne d'un UICollectionView lors de la présentation
J'ai corrigé cela en définissant explicitement le cadre avant de présenter
Voici la méthode complète qui fonctionne sans l'erreur
la source
Vous pouvez désactiver l'avertissement "Instantané d'une vue" en référençant la
view
propriété avant de présenter le contrôleur de vue. Cela entraîne le chargement de la vue et permet à iOS de la rendre avant de prendre l'instantané.la source
cameraOverlayView
, malheureusement, je reçois toujours ce problème même lorsque j'applique ce conseil.Pour toute personne qui voit un problème avec un aperçu noir après la capture d'image, masquer la barre d'état après que l'UIPickerController est affiché semble résoudre le problème.
la source
J'ai trouvé le même problème et j'ai tout essayé. J'ai deux applications différentes, une en objectif C et une en rapide - les deux ont le même problème. Le message d'erreur apparaît dans le débogueur et l'écran devient noir après la première photo. Cela ne se produit que dans iOS> = 8.0, c'est évidemment un bug.
J'ai trouvé une solution de contournement difficile. Fermez les commandes de la caméra avec imagePicker.showsCameraControls = false et créez votre propre overlayView qui a les boutons manquants. Il existe différents didacticiels sur la façon de procéder. Le message d'erreur étrange reste, mais au moins l'écran ne devient pas noir et vous avez une application qui fonctionne.
la source
Cela pourrait être un bogue de ImagePickerController intégré. Mon code fonctionne, mais se bloque parfois sur iPhone 6 Plus.
J'ai essayé toutes les solutions suggérées par d'autres réponses mais il n'y a pas eu de chance. Problème finalement résolu après le passage à JPSImagePickerController .
la source
J'ai tout essayé, mon problème était que le sélecteur d'images pour l'appareil photo et la photothèque a disparu juste après leur affichage. Je l'ai résolu avec la ligne suivante (rapide)
la source
Je suis presque sûr que ce n'est qu'un bug dans iOS 8.0. Il est reproductible avec la plus simple des applications POC qui ne fait rien de plus que de présenter un UIImagePickerController comme vous le faites ci-dessus. De plus, il n'y a pas de modèle alternatif à l'affichage du sélecteur d'image / caméra, à ma connaissance. Vous pouvez même télécharger l'exemple d'application Apple utilisant UIImagePickerController, l'exécuter et cela générera la même erreur hors de la boîte.
Cela dit, la fonctionnalité fonctionne toujours pour moi. Outre l'avertissement / l'erreur, avez-vous des problèmes avec le fonctionnement de votre application?
la source
Si nous utilisons le
UIImagePickerController
tant que propriété, cet avertissement disparaîtra.xcodesupposons que nous n'utilisons pas le résultat de laUIImagePickerController
, si nous instancions l'UIImagePickerController
intérieur d'une fonction.la source
Appeler cette méthode a fonctionné pour moi. Placez-le après avoir présenté votre vue.
la source
Je rencontre également le même problème et je l'ai résolu en vérifiant si la caméra est disponible:
la source
J'ai rencontré ce problème. Lorsque nous appelons la caméra et libérons les vues, ce problème est produit. Pour un exemple, appelez une caméra et définissez view nil dans la méthode viewDidDisappear, cette erreur se produira car il n'y a pas de rappel pour l'événement de caméra. Assurez-vous également de ce cas pour cette erreur.
la source
J'ai eu le même bug, obtenant un message ci-dessous dans la console lors de l'ouverture de la caméra.
«La capture instantanée d'une vue qui n'a pas été rendue entraîne une capture instantanée vide. Assurez-vous que votre vue a été rendue au moins une fois avant l'instantané ou l'instantané après les mises à jour de l'écran. '
Pour moi, le problème était avec le nom d'affichage Bundle dans Info.plist file.it était vide, j'ai mis le nom de mon application là et maintenant ça fonctionnait bien.Je n'ai reçu aucune alerte d'autorisation de caméra en raison du nom d'affichage Bundle vide.it bloqué le rendu de la vue.
le problème n'était pas visible, mais en le présentant sans autorisation.vous pouvez le vérifier dans les paramètres -> confidentialité -> Appareil photo, si votre application n'y figure pas, le problème pourrait être le même.
la source
J'utilise Phonegap, mais ce fil continue à apparaître comme le premier lorsque Google recherche le message d'erreur.
Pour moi, ce problème a disparu en définissant le type d'image en PNG.
Donc, toute la ligne étant:
Votre kilométrage peut varier, mais cela a fait l'affaire pour moi.
la source
Vous pouvez également envisager d'utiliser
drawViewHierarchyInRect
:Rapide:
Objectif c:
Regarde aussi:
la source
Dans mon cas (XCode 7 et iOS 9), j'utilise
UINavigationController
"caché", donc je dois ajouterUINavigationControllerDelegate
au présent appareil photo ou rouler et ça fonctionne comme il est censé le faire!And pickerControllerDelegate.self
n'affiche pas non plus d'erreur!la source