2014-09-26 61 views
1

我有一個使用iOS7製作的iPad項目,它在橫向模式下顯示一個視圖控制器。在這個視圖控制器上,有一個UITextField,它是屏幕上的第一個響應者,因此當用戶進入這個屏幕時,鍵盤應該被呈現出來,它就是這樣做的。然而,問題在於,在iOS 8中以縱向模式顯示視圖控制器時,鍵盤以縱向模式顯示。我如何解決此問題,以便鍵盤的方向與視圖控制器一致(它仍然以橫向模式正確顯示)?只是爲了記錄,這個視圖尤其是使用.xib文件,而不是在故事板中。試圖在橫向模式而不是縱向模式下顯示鍵盤在iOS 8中

下面是我的代碼:

MyLandscapeViewController.m

相關方法:

-(BOOL)shouldAutorotate { 
    return NO; 
} 

-(NSUInteger)supportedInterfaceOrientations{ 
    return UIInterfaceOrientationMaskLandscape; 
} 

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation{ 
    return UIInterfaceOrientationLandscapeLeft; 
} 


- (void)viewDidUnload { 
    [self setKeyboardButton:nil]; 
    [super viewDidUnload]; 
} 

對於視圖控制器,I創建自定義導航控制器:

MyNavigationController .m

-(BOOL)shouldAutorotate{ 
    return [self.topViewController shouldAutorotate]; 
} 

-(NSUInteger)supportedInterfaceOrientations{ 
    return [self.topViewController supportedInterfaceOrientations]; 
} 

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation{ 
    return [self.topViewController preferredInterfaceOrientationForPresentation]; 
} 

從我的應用程序,它被稱爲如下:

MyLandscapeViewController *myView = [[MyLandscapeViewController alloc] initWithNibName:@"MyLandscapeViewController" bundle:nil]; 

    MyNavigationController *navigationController = [[MyNavigationController alloc] initWithRootViewController:myView]; 
    [self.rootViewController presentViewController:navigationController animated:YES completion:nil]; 

我需要什麼樣的變化,使這個在iOS 8工作?

在此先感謝所有回覆的人。

+0

你可以試試[UIViewController中attemptRotationToDeviceOrientation在viewDidAppear並設置第一個響應者在緊接本 – brendan 2014-09-26 23:28:41

+0

感謝布蘭登您的回覆。我嘗試過,但不幸的是它沒有奏效。 – syedfa 2014-09-27 18:16:50

回答

2

試試這個。

- (void)viewWillAppear:(BOOL)animated { 
    [super viewWillAppear:animated]; 

    [[UIDevice currentDevice] setValue:[NSNumber numberWithInteger: UIInterfaceOrientationLandscapeLeft] forKey:@"orientation"]; 
    [UIViewController attemptRotationToDeviceOrientation]; 

} 
+0

將第一行('[[UIDevice currentDevice] setValue:...];')添加到viewWillAppear中,爲我在iOS 8中修復鍵盤方向,謝謝! – JasonJasonJason 2015-04-22 22:08:26

+0

我用'[[UIDevice currentDevice] setValue:[NSNumber numberWithInteger:UIInterfaceOrientationLandscapeLeft] forKey:@「orientation」];'解決我的問題,但要小心,如果你想使用'UIDeviceOrientationLandscapeLeft'而不是'UIInterfaceOrientationLandscapeLeft',你必須知道'UIDeviceOrientationLandscapeLeft'等於'UIInterfaceOrientationLandscapeRight',反之亦然! – 2015-05-08 09:26:15

相關問題