我的应用程序一直运行良好,直到我尝试使用ios 6 SDK进行一些更改
该应用程序99%的时间以纵向模式运行。这仅限于允许在info.plist
中使用portait模式有一个视图控制器需要以横向模式显示。这是通过简单地将视图旋转90度来“手动”实现的,如下所示:
self.view.transform = CGAffineTransformMakeRotation(3.14159/2);
这在iOS 6中仍可正常使用。
但是,此视图控制器具有一些文本字段。当用户点击一个时,它会显示键盘。由于我只旋转了视图(而不是实际改变了设备的方向),键盘以纵向模式出现,这是不好的。
在以前版本的iOS中,我将状态栏的方向设置为横向,并且作为副产品,这会将键盘设置为横向,如下所示:
[[UIApplication sharedApplication] setStatusBarOrientation: UIInterfaceOrientationLandscapeRight animated:NO];
然而,这已停止在iOS 6上工作。
我已经阅读了一百万个堆栈溢出试图让它工作,但仍然没有运气。
答案 0 :(得分:3)
更改键盘方向和变换是一个困难的部分,而不是一个好的解决方案(特别是当它改变状态栏方向时)。
更好的解决方案是允许应用程序支持所有方向。
在ViewControllers中实现Orientation委托,作为旋转支持。
仅支持横向
-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return interfaceOrientation == UIInterfaceOrientationLandscapeLeft
|| interfaceOrientation == UIInterfaceOrientationLandscapeRight ;
}
- (BOOL)shouldAutorotate
{
return NO;
}
仅限支持肖像
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
- (BOOL)shouldAutorotate
{
return NO;
}
- (NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskPortrait;
}