Предпочитаемое значение InterfaceOrientationForPresentation должно возвращать поддерживаемую ориентацию интерфейса (iOS 6)
Контроллер корневого представления окна моего приложения является подклассом UINavigationController. Я добавил этот код в класс:
- (BOOL)shouldAutorotate
{
return [self.topViewController shouldAutorotate];
}
- (NSUInteger)supportedInterfaceOrientations
{
return [self.topViewController supportedInterfaceOrientations];
}
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
return [self.topViewController preferredInterfaceOrientationForPresentation];
}
В мой корневой UIViewController я добавил этот код:
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
return UIInterfaceOrientationPortrait;
}
- (BOOL)shouldAutorotate
{
return NO;
}
- (NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationPortrait;
}
Когда устройство поворачивается в горизонтальное положение на этом контроллере вида, я представляю модальный контроллер вида. Когда устройство поворачивается обратно в портретное положение, я должен отклонить модальное представление, но при этом я получаю следующую ошибку:
'preferredInterfaceOrientationForPresentation must return a supported interface orientation!'
Почему я получаю эту ошибку?
Я попытался вернуть YES из shouldAutorotate в корневом UIViewController, и теперь я получаю сообщение об ошибке "Поддерживаемые ориентации не имеют общей ориентации с приложением, а shouldAutorotate возвращает YES". Это не имеет смысла для меня, потому что UIInterfaceOrientationPortrait является одним из приложений, поддерживаемых ориентаций.
1 ответ
В -supportedInterfaceOrientations
необходимо вернуть значения из UIInterfaceOrientationMask
не UIInterfaceOrientation
, В частности, похоже, что вы хотите UIInterfaceOrientationMaskPortrait
Вот что говорит документация для -supportedInterfaceOrientations о возвращаемом значении:
Возвращаемое значение
Битовая маска, указывающая, какие ориентации поддерживаются. См. "UIInterfaceOrientationMask" для правильных значений битовой маски. Значение, возвращаемое этим методом, не должно быть 0.