У меня есть приложение для iOS7 с UIViewController, которое должно поддерживать пейзаж влево-вправо, а портрет - портрет вверх ногами и другие ViewControllers должны поддерживать только ориентацию влево и вправо. Я использовал уведомление, чтобы уведомить об изменении ориентации и соответствующим образом обновить соответствующие объекты. Я также проверяю текущую ориентацию UIDevice на поворот. Проблема , с которой я сталкиваюсь, заключается в том, что даже небольшой способ изменения ориентации триггера или наклона, который обновляет представления. Я даже получаю причудливые рамы зрения тогда и там. Я использую beginGeneratingDeviceOrientationNotifications и endGeneratingDeviceOrientationNotifications on viewDidLoad и viewWillDisappear соответственно. Есть ли способ ограничить вращение устройства в одиночку?Направление наклона вверх/вниз и боковые триггеры ориентации уведомления
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(deviceDidRotate:) name:UIDeviceOrientationDidChangeNotification object:nil]; // adding observer to notify when device rotates.
deviceDidRotate: вызывается даже для небольшого наклона или тряски, которого я на самом деле хочу избежать.
UIDeviceOrientation orientation = [UIDevice currentDevice].orientation;
//Ignoring specific orientations
if (orientation == UIDeviceOrientationFaceUp||orientation == UIDeviceOrientationFaceDown ||orientation == UIDeviceOrientationUnknown)
{
return;
}
if ((UIDeviceOrientationIsPortrait(orientation) || UIDeviceOrientationIsLandscape(orientation))) {
[UIViewController attemptRotationToDeviceOrientation];
}
Чтобы избежать эффекта наклона Я использую этот метод делегата
- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{
[self handleViewArrangementWithCurrentOrientation];
}
Как я могу пропустить триггер уведомления при малейшем сотрясении или наклоне. У меня на самом деле есть анимация в обновлении вида при изменении ориентации, которая дает мерцающий вид эффекта и его частоту. Мне нужно удалить это. Пожалуйста, помогите парням.
Наклон вверх/вниз - вращение вокруг оси X, а не Z-ось. – trojanfoe
Да, ориентация UIDevice колеблется быстро. Вы не должны использовать его для установки вращения контроллера просмотра. Есть ли причина, по которой вы не можете использовать viewDidRotate в контроллере (-ах) просмотра? Или, еще лучше, используйте автозапуск? –
@AnnaDickinson: Я использую автомат. Это не проблема с макетом. Я получаю мой код для обновления представления, который вызывается даже для небольшого встряхивания/наклона из-за срабатывания уведомления. Что я могу сделать, чтобы этого избежать. Пользователи почувствовали бы это как ошибку. Есть ли другой путь? – Meera