Почему мои взгляды не вращаются? - PullRequest
1 голос
/ 07 сентября 2011

У меня есть приложение панели вкладок для iPad, созданное с использованием базового шаблона панели вкладок.Я добавил несколько пользовательских контроллеров представления (по одному для каждой вкладки, каждый с соответствующим NIB), а также несколько дополнительных контроллеров представления с NIB, которые будут использоваться в качестве модальных представлений.Все прекрасно работает, пока я не поверну устройство.

Мое приложение поддерживает только портретную ориентацию, поэтому у меня было это во всех моих контроллерах вида:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return (interfaceOrientation != UIDeviceOrientationLandscapeLeft) &&
    (interfaceOrientation != UIDeviceOrientationLandscapeRight);
}

Однако приложение не будет вращаться всимулятор или устройство при переворачивании.Я дважды и трижды проверил, что все мои контроллеры представления имеют вышеуказанный код.

Я просмотрел все свои NIB и проверил, все ли они отмечены галочкой «Повернуть подпредставления».В любом случае я не изменил ни одну из настроек NIB по умолчанию, кроме основных вещей, необходимых для их отображения в представлениях вкладок.

Я попытался изменить код во всех моих контроллерах представления на это:

- (BOOL)shouldAutorotateToInterfaceOrientation(UIInterfaceOrientation)interfaceOrientation
{
    return UIInterfaceOrientationIsPortrait(interfaceOrientation);
}

Это не имело никакого значения.Я абсолютно уверен, что один и тот же метод используется во всех контроллерах представления.Я не знаю, что еще я могу сделать.Я не вижу причин, по которым он не должен поворачиваться в перевернутом виде.

Любая помощь с этим будет очень признательна.

Ответы [ 4 ]

1 голос
/ 14 октября 2012

Кроме того, это очень полезное руководство от Apple: http://developer.apple.com/library/ios/#qa/qa1688/_index.html

В моем случае - я забыл вызвать self = [super initWithNibName ....]!

1 голос
/ 08 сентября 2011

Понял!Один из моих контроллеров представления не был подключен к соответствующей вкладке в IB.Поскольку я еще не добавил изображения и не написал код для этого View Controller, я не заметил, что он не связан с IB.Я сделал метод shouldAutorotateToInterfaceOrientation, но, похоже, он не вступил в силу, пока не было установлено соединение в IB.

Большое спасибо за предложения по этому вопросу.Это очень неприятная проблема, с которой мы сейчас сталкиваемся!

0 голосов
/ 07 сентября 2011

Первый фрагмент, который у вас есть, логически неверен:

-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)orientation
{
    return (orientation != UIDeviceOrientationLandscapeLeft) &&
           (orientation != UIDeviceOrientationLandscapeRight);
}

Здесь orientation - это экземпляр UIInterfaceOrientation, тогда как UIDeviceOrientationLandscapeLeft - это экземпляр UIDeviceOrientation.Эти два типа не одинаковы, поэтому сравнивать их не следует.

Вместо этого следует использовать параметры UIInterfaceOrientation:

typedef enum {
  UIInterfaceOrientationPortrait           = UIDeviceOrientationPortrait,
  UIInterfaceOrientationPortraitUpsideDown = UIDeviceOrientationPortraitUpsideDown,
  UIInterfaceOrientationLandscapeLeft      = UIDeviceOrientationLandscapeLeft,
  UIInterfaceOrientationLandscapeRight     = UIDeviceOrientationLandscapeRight
} UIInterfaceOrientation;

Измените метод на

-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)orientation
{
    return (orientation == UIInterfaceOrientationLandscapeLeft ||
           orientation == UIInterfaceOrientationLandscapeRight);
}

(код кажется мне более читабельным, когда он положительный, а не отрицательный)

0 голосов
/ 07 сентября 2011

Включает ли "все ваши контроллеры представления" контроллер панели вкладок?

В приложениях панели вкладок это единственный контроллер представления, который shouldAutoRotateToInterfaceOrientation вызывается и оценивается вообще.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...