4

如果用户在横向模式下拿着 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

我有什么方法可以检查/知道用户是否一直以横向(UIDeviceOrientationLandscapeLeftUIDeviceOrientationLandscapeRight)持有应用程序,然后将设备放下(应该是UIDeviceOrientationFaceUp

4

1 回答 1

4

您感兴趣的不是设备方向,而是界面方向。尝试使用self.interfaceOrientationself您的视图控制器在哪里)。您也可以从[[UIApplication sharedApplication] statusBarOrientation].

话虽如此,您可能根本不应该使用界面方向来找出键盘的位置。键盘在出现并四处移动时会生成通知,其中包括位置信息。看看UIKeyboardWillShowNotificationUIKeyboardWillChangeFrameNotification。他们在 userInfo 字典中的UIKeyboardFrameBeginUserInfoKeyUIKeyboardFrameEndUserInfoKey键下有位置信息,这将告诉您键盘的位置。

于 2012-12-20T01:43:13.057 回答