2

在我尝试使用 ios 6 SDK 进行一些更改之前,我的应用程序一直运行良好

该应用程序 99% 的时间都以纵向模式运行。这受到了仅允许在 info.plist 中使用肖像模式的限制

有一个视图控制器需要以横向模式显示。这是通过简单地将视图旋转 90 度来“手动”实现的,如下所示:

self.view.transform = CGAffineTransformMakeRotation(3.14159/2);

这在 iOS 6 中仍然可以正常工作。

然而,这个视图控制器有一些文本字段。当用户点击一个时,它会显示键盘。因为我只旋转了视图(实际上并没有改变设备的方向),所以键盘以纵向模式出现,这不好。

在以前的 iOS 版本中,我将状态栏的方向设置为横向,作为副产品,这会将键盘也设置为横向,如下所示:

[[UIApplication sharedApplication] setStatusBarOrientation: UIInterfaceOrientationLandscapeRight animated:NO];

但是,这已停止适用于 iOS 6。

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

4

1 回答 1

3

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

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

在此处输入图像描述

根据旋转支持在 ViewControllers 中实现方向委托。

仅支持横向

-(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;
}
于 2013-03-15T23:21:04.800 回答