我有一個應用程序,它必須同時在縱向和橫向上工作,並且UITabBar應該調整到當前方向(它具有自定義背景和選定項目)。所以,對於其餘的意見,我只是覆蓋- (void) didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
方法,它完美的作品。在UITabBarController中爲「更多」UINavigationController處理設備旋轉。更多導航控制器
我該怎麼做.moreNavigationController
UITabBarController
?我嘗試添加一個觀察者(選擇是的UITabBarController的擴展名):
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(didRotate:)
name:UIApplicationDidChangeStatusBarOrientationNotification
object:self.moreNavigationController];
但它永遠不會被調用。 我是否錯過了什麼或處理這種情況的最佳方法?
解決方案:爲什麼UIDeviceOrientation
不能正確觸發,所以最好使用statusBarOrientation
,作爲一種魅力。
最終代碼的工作是這樣的: 主UITabBarController
,viewDidLoad
:
[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(didRotate:)
name:UIApplicationDidChangeStatusBarOrientationNotification
object:nil];
的didRotate
選擇方法:
- (void) didRotate:(NSNotification *)notification{
UIInterfaceOrientation orientation = [UIApplication sharedApplication].statusBarOrientation;
if(UIInterfaceOrientationIsPortrait(orientation)) {
// Portrait
} else {
// Landscape
}
}
感謝您的幫助。
請檢查我的最終解決方案以獲取正確答案。你的東西讓我變得可以解決問題,所以賞金就是你的。 :) 謝謝。 – whiteagle
@whiteagle使用設備方向通知時,您可以獲取如下的方向:[[UIDevice currentDevice]方向]。也許這就是爲什麼它不適合你。否則你的解決方案看起來不錯很高興成爲幫助:) – iska
設備方向甚至沒有被稱爲,donno爲什麼。 :/ – whiteagle