只用键盘方向(iOS 6中)(Set keyboard orientation only (iOS

2019-07-21 18:15发布

我的应用程序一直工作正常,直到我试着让使用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的工作。

我看过一百万堆栈溢出试图让这个工作,但仍然没有运气。

Answer 1:

Changing the keyboard orientation and transform is an difficult part and not a good solution(especially when it changes status bar orientations).

Better solutions is to allow application to support all orientations.

Implement the Orientation delegates inside your ViewControllers asper the rotation support.

For Supporting only Landscape

-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return interfaceOrientation == UIInterfaceOrientationLandscapeLeft
    || interfaceOrientation == UIInterfaceOrientationLandscapeRight ;
}

- (BOOL)shouldAutorotate
{
    return NO;
}

For Supporting only Portrait

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return (interfaceOrientation == UIInterfaceOrientationPortrait);
}

- (BOOL)shouldAutorotate
{
    return NO;
}

- (NSUInteger)supportedInterfaceOrientations
{
    return UIInterfaceOrientationMaskPortrait;
}


文章来源: Set keyboard orientation only (iOS 6)
标签: ios ios6