仅设置键盘方向(iOS 6)

时间:2013-03-15 23:02:43

标签: ios ios6

我的应用程序一直运行良好,直到我尝试使用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上工作。

我已经阅读了一百万个堆栈溢出试图让它工作,但仍然没有运气。

1 个答案:

答案 0 :(得分:3)

更改键盘方向和变换是一个困难的部分,而不是一个好的解决方案(特别是当它改变状态栏方向时)。

更好的解决方案是允许应用程序支持所有方向。

enter image description here

在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;
}