【问题标题】:Set keyboard orientation only (iOS 6)仅设置键盘方向 (iOS 6)
【发布时间】:2013-03-16 18:49:03
【问题描述】:

在我尝试使用 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 上运行。

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

【问题讨论】:

  • 您能不能简单地以模态方式呈现该单个 viewController 并允许它仅使用横向?
  • 我不介意,但我的第一次尝试没有奏效。新的视图控制器以纵向模式启动。我为preferredInterfaceOrientationForPresentation 指定了一个方法来返回横向模式,但是这个方法似乎永远不会被调用...

标签: ios ios6


【解决方案1】:

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

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

根据旋转支持在 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;
}

【讨论】:

  • 感谢您提供如此明确的答案,但不幸的是,它仍然无法正常工作。它只是忽略限制并在您旋转设备时自动旋转。有趣的是,只有一种方法被调用:supportedInterfaceOrientations。其他 2 永远不会被调用。我需要做些什么来告诉视图控制器这些委托方法可用吗?
  • 使用 ios6 对吗?做了三个步骤?我的意思是在 Targets 和 .plist 中包含 Support Orientation 更改?
  • 是的,如果我没听错的话。它是 iOS 6。我在目标中的 4 个按钮看起来像上面的屏幕截图(没有一个是深灰色),在我的 info.plist 中,它显示“支持的界面方向(数组):0”
  • 哦..现在一切都好起来了..还要清理一下,然后再次运行。如果你不介意可以通过 ramshadram90@gmail.com 分享你的示例代码吗?
  • 谢谢,但它仍然无法正常工作。它只是不调用任何这些方法,除了 supportedInterfaceOrientations。我在其他地方看到了一些答案,说您应该使用类别将这些方法添加到视图控制器类。问题是我认为这会将所有视图控制器全局设置为相同的方向?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-02-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-12
  • 1970-01-01
相关资源
最近更新 更多