Можно ли узнать, находится ли пользовательский интерфейс приложения в горизонтальной ориентации после того, как устройство было установлено на поверхности?
Я определяю смещение кадра для клавиатуры, если пользователь держит iPad в альбомном режиме. Я обнаружил, что не могу правильно установить смещение, если добавляю контент в ландшафтном режиме, а затем устанавливаю iPad на ровную поверхность. Я использую код ниже, чтобы установить смещение:
if ([[UIDevice currentDevice] orientation] == UIDeviceOrientationLandscapeLeft || [[UIDevice currentDevice] orientation] == UIDeviceOrientationLandscapeRight) {
tableView.frame = CGRectMake(0,0,tableView.frame.size.width, tableView.frame.size.height-keyboardsize.height);
}
UIDeviceOrientations, которые я могу проверить:
typedef enum {
UIDeviceOrientationUnknown,
UIDeviceOrientationPortrait,
UIDeviceOrientationPortraitUpsideDown,
UIDeviceOrientationLandscapeLeft,
UIDeviceOrientationLandscapeRight,
UIDeviceOrientationFaceUp,
UIDeviceOrientationFaceDown
} UIDeviceOrientation;
(источник: http://developer.apple.com/library/ios/#documentation/uikit/reference/UIDevice_Class/Reference/UIDevice.html)
Могу ли я проверить / узнать, удерживал ли пользователь приложение в альбомной ориентации (UIDeviceOrientationLandscapeLeft
или же UIDeviceOrientationLandscapeRight
) и затем установите устройство вниз (что должно быть UIDeviceOrientationFaceUp
)
1 ответ
Вас интересует не ориентация устройства, а ориентация интерфейса. Попробуйте использовать self.interfaceOrientation
(где self
это ваш вид контроллера). Вы также можете получить это от [[UIApplication sharedApplication] statusBarOrientation]
,
При этом, вы, вероятно, не должны использовать ориентацию интерфейса вообще, чтобы узнать, где находится клавиатура. Клавиатура генерирует уведомления о появлении и перемещении, которые включают информацию о положении. Посмотрите на UIKeyboardWillShowNotification
а также UIKeyboardWillChangeFrameNotification
, У них есть информация о положении в их словаре userInfo под UIKeyboardFrameBeginUserInfoKey
а также UIKeyboardFrameEndUserInfoKey
клавиши, которые скажут вам, где будет клавиатура.