iOS 6.1 - fixe
Comme d'iOS 6.1, cela ne se produit plus, il est très important de suivre mes conseils afin d'éviter un crash sous iOS 6.0.x, le ci-dessous s'applique toujours à que les.
iOS 6.0.x solution de contournement
C'est en fait un bug dans iOS 6.0, cela devrait être corrigé dans les futures versions du logiciel iOS.
Un ingénieur d'Apple, a expliqué ce bug et une solution de contournement: https://devforums.apple.com/message/731764
Ce qui se passe parce que l'Application veut orientation paysage, mais certains Cocoa Touch Afficher les Contrôleurs exigent strictement orientation Portrait qui est l'erreur - non pas qu'ils doivent être exigeant plus de Portrait, mais leur interprétation des besoins des Applications.
Un exemple de ceci peut être la suivante:
l'application iPad de l'appui paysage affiche uniquement une UIImagePickerController
par l'intermédiaire d'un UIPopoverController. Le UIImagePickerController exige
En orientation Portrait, mais l'app est de forcer paysage uniquement. Erreur
et crash...
D'autres cadres qui ont été signalés comme étant problématiques incluent le Centre de Jeu de connexion view controller.
La solution est assez simple, mais pas idéal... Vous gardez les orientations correctes déclaré dans votre info.plist/projet volet d'informations, mais dans l'Application de Délégué de classe, vous déclarez que vous permettre à toutes les orientations.
Maintenant, chaque point de Vue Contrôleur de vous ajouter à la fenêtre doit spécifier lui-même qu'il ne peut être le Paysage. Veuillez vérifier le lien pour plus de détails.
Je ne peux pas insister sur la façon dont beaucoup vous ne devriez pas être sous-classement UIImagePickerController
que la solution retenue est d'insister vous ne.
La chose importante ici est "Cette classe est destiné à être utilisé comme tel et ne prend pas en charge les sous-classement."
Dans mon cas, j'ai ajouté ceci à ma demande du délégué (j'ai un paysage seule application), ce qui signifie que le sélecteur d'images qu'il peut afficher, parce que le portrait est pris en charge:
- (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window{
return UIInterfaceOrientationMaskAll;
}
Et puis de mon point de vue contrôleur qui est arrivé à être un UINavigationController
, j'ai inclus une catégorie à la suivante:
- (NSUInteger)supportedInterfaceOrientations{
return UIInterfaceOrientationMaskLandscape;
}
Maintenant, mon application ne permet pas de tourner, et le sélecteur d'images demande le délégué s'il peut afficher que le portrait et il dit que c'est normal. Donc tout se joue bien.