3

如果用戶將iPad保持橫向模式,我正在確定鍵盤的幀偏移量。如果我在橫向模式下添加內容,然後將iPad平放在表面上,我發現無法正確設置偏移量。我使用下面的代碼來設置偏移:在設備已​​放置在表面上後,是否可以找出應用UI是否處於橫向方向?

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

您感興趣的不是設備方向,而是界面方向。嘗試使用self.interfaceOrientation(其中self是您的視圖控制器)。你也可以從[[UIApplication sharedApplication] statusBarOrientation]得到這個。

也就是說,你可能不應該使用界面方向來找出鍵盤的位置。鍵盤在出現和移動時會生成通知,其中包括位置信息。看看UIKeyboardWillShowNotificationUIKeyboardWillChangeFrameNotification。他們的用戶信息字典中的位置信息在UIKeyboardFrameBeginUserInfoKeyUIKeyboardFrameEndUserInfoKey鍵之下,它會告訴你鍵盤的位置。

+0

這解決了我的問題,謝謝! – propstm

相關問題