Предпочитаемое значение 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.

Другие вопросы по тегам