在iPhone中禁用键盘方向

在iPhone中禁用键盘方向,iphone,keyboard,orientation,Iphone,Keyboard,Orientation,我只需要支持键盘视图的纵向模式 因为,我有一个支持所有方向的UIViewController。它提供了一个仅支持纵向的视图控制器,该视图具有一个文本字段。当TextField成为第一响应者时,弹出键盘视图。现在,如果我更改设备方向,键盘将其方向更改为横向 如何使键盘保持纵向方向?如果您只需要纵向方向,您可以通过以下方式禁用自动旋转: [[UIDevice currentDevice] endGeneratingDeviceOrientationNotifications]; 试试这个: 创建名

我只需要支持键盘视图的纵向模式

因为,我有一个支持所有方向的UIViewController。它提供了一个仅支持纵向的视图控制器,该视图具有一个文本字段。当TextField成为第一响应者时,弹出键盘视图。现在,如果我更改设备方向,键盘将其方向更改为横向


如何使键盘保持纵向方向?

如果您只需要纵向方向,您可以通过以下方式禁用自动旋转:

[[UIDevice currentDevice] endGeneratingDeviceOrientationNotifications];
试试这个:

创建名为
UIInterfaceOrientation previousOrientation
的iVar

当你说
[textField becomeFirstResponder]添加:

[viewController shouldAutoRotateToInterfaceOrientation:UIInterfaceOrientationPortrait];

// Set the previousOrientation to whatever it was
previousOrientation = viewController.interfaceOrientation

// This prevents it from leaving portrait orientation
[[UIDevice currentDevice] endGeneratingDeviceOrientationNotifications];
然后在
[textField resignFirstResponder]
中,当用户关闭键盘或按enter键时; 可以恢复到原始方向

[ViewController shouldAutoRotateToInterfaceOrientation:previousOrientation];

// Turn the notifications back on so that it will be able to rotate again
[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];

谢谢你的回复。我使用这个有一个问题。如果我禁用通知,现在如果我更改为横向,它将按预期工作。但是,当模式视图控制器被解除时,我的第一个UIViewController[显示另一个UIViewController]应该处于当前设备方向。由于我们在设备方向更改时禁用了通知,因此我的UIViewController将不会自动旋转。我不知道我是否正确理解您的问题,但如果您只需要在键盘处于活动状态时禁用旋转,通过观察
UIKeyboardDidShowNotification
将其禁用,通过观察
UIKeyboardDidHideNotification
将其重新打开。希望这能有所帮助。当然,您可以通过
UITextViewDelegate
的适当回调方法来实现,正如我所说的,我希望ViewController以设备为导向。我的键盘视图应始终处于纵向模式,与设备方向无关。我该怎么做?键盘的方向是由设备当时的方向设置的。你必须像上面那样手动设置它,否则它不会改变。另外,出于好奇,为什么你会有一个横向UITextField的水平键盘?我有一个UIViewController,它的视图必须在所有方向上工作。当用户点击此视图中提供的其中一个选项时,将显示模态视图控制器,并且其视图具有文本字段。当此文本字段变为第一响应者时,将显示键盘视图。现在,如果用户将方向更改为横向,则显示的模态视图和键盘不应更改其方向[应始终为纵向]。当模态视图控制器被解除时,UIViewController vc应更改其方向或处于横向。请参阅编辑,这应该是您想要的。它会临时重新定向viewController,以便您可以键入“纵向”,然后返回到原始方向(无论是什么方向)。