我有一个使用iOS7制作的iPad项目,它在横向模式下一度显示一个视图控制器。在这个视图控制器上,有一个UITextField,它是屏幕上的第一个响应者,因此当用户进入该屏幕时,应该立即显示键盘,它就是这样。
但问题是,在iOS 8中以横向模式显示视图控制器时,键盘正在以纵向模式显示。如何更正此键盘,使键盘的方向与视图控制器(仍然以横向模式正确显示)?仅供记录,此视图特别使用.xib文件,而不是故事板。
以下是我的代码:
MyLandscapeViewController.m
相关方法:
-(BOOL)shouldAutorotate {
return NO;
}
-(NSUInteger)supportedInterfaceOrientations{
return UIInterfaceOrientationMaskLandscape;
}
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation{
return UIInterfaceOrientationLandscapeLeft;
}
- (void)viewDidUnload {
[self setKeyboardButton:nil];
[super viewDidUnload];
}
对于视图控制器,我创建了一个自定义导航控制器:
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 :(得分:2)
试试这个。
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
[[UIDevice currentDevice] setValue:[NSNumber numberWithInteger: UIInterfaceOrientationLandscapeLeft] forKey:@"orientation"];
[UIViewController attemptRotationToDeviceOrientation];
}