Cette erreur n'a pas de sens, car l'orientation préférée UIInterfaceOrientationLandscapeRight
est renvoyée par l'orientation prise en charge
//iOS6
-(BOOL)shouldAutorotate
{
return NO;
}
-(NSUInteger)supportedInterfaceOrientations
{
return (UIInterfaceOrientationLandscapeRight | UIInterfaceOrientationLandscapeLeft);
}
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
return UIInterfaceOrientationLandscapeRight;
}
Erreur :
Arrêt de l'application en raison d'une exception non interceptée 'UIApplicationInvalidInterfaceOrientation', raison: 'PreferredInterfaceOrientationForPresentation doit renvoyer une orientation d'interface prise en charge!'
Votre code devrait ressembler à ceci:
-(BOOL)shouldAutorotate
{
return NO;
}
-(NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskLandscape;
}
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
return UIInterfaceOrientationLandscapeRight;
}
Assurez-vous également dans votre Info.plist
vous avez défini les bonnes orientations pour votre application car ce que vous retournez de supportedInterfaceOrientations
est intersecté avec le Info.plist
et s'il ne peut pas en trouver un commun, vous obtiendrez cette erreur.
supportedInterfaceOrientations est uniquement appelé, si shouldAutorotate est défini sur YES
- (BOOL)shouldAutorotate
{
return YES;
}
- (NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskLandscape;
}
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
return UIInterfaceOrientationLandscapeRight;
}
L'approche la plus simple pour moi consiste uniquement à définir Info.plist
Si vous souhaitez prendre en charge iOS 5, utilisez ce code dans vos contrôleurs de vue.
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return UIInterfaceOrientationIsLandscape(interfaceOrientation);
}
Ce sont les mauvaises énumérations pour supportedInterfaceOrientations
. Vous devez utiliser UIInterfaceOrientationMaskLandscapeLeft
, etc (notez le masque Word au milieu)
de la documentation:
-(NSUInteger)supportedInterfaceOrientations {
return UIInterfaceOrientationMaskLandscapeRight | UIInterfaceOrientationMaskLandscapeLeft;
}
Notez que l'orientation correcte est "Masque"! Avez-vous essayé cela?