Как обнаружить поворот на iPhone без автоповорота устройства? - PullRequest
2 голосов
/ 15 июня 2009

Кто-нибудь знает, как это сделать?

Я думал это:

-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    return YES;
}

- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {
}

- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation duration:(NSTimeInterval)duration {
}

- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation {
}

- (void)willAnimateFirstHalfOfRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {
}

- (void)didAnimateFirstHalfOfRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation {
}

- (void)willAnimateSecondHalfOfRotationFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation duration:(NSTimeInterval)duration {
}

может предотвратить вращение устройства (переопределяя все методы поворота моего UIViewController и не вызывая суперкласс), но я боюсь, что это не UIViewController, который фактически выполняет вращение.

Мой UIViewController находится в UINavigationController.

У кого-нибудь есть идеи?

Cheers, Ник.

Ответы [ 3 ]

20 голосов
/ 15 июня 2009

Вы можете зарегистрироваться для получения уведомления UIDeviceOrientationDidChangeNotification (от UIDevice.h), а затем, если вас волнует изменение ориентации, вызвать этот метод:

[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];

Если вам больше не нужны изменения ориентации, вызовите этот метод:

[[UIDevice currentDevice] endGeneratingDeviceOrientationNotifications];

Уведомление будет отправлено, когда это применимо, и вы можете проверить [UIDevice currentDevice].orientation, чтобы узнать текущую ориентацию.

4 голосов
/ 16 июня 2009

На заметку следует, что AutoTotateToInterfaceOrientation вызывался во время вращения в 2.x, но в 3.0 он гораздо менее последовательный Уведомление, упомянутое в другом посте, - это путь для надежного указания поворота.

1 голос
/ 15 июня 2009

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

Что касается получения текущей ориентации устройства, вы можете использовать [[UIDevice currentDevice] orientation].

...