禁用 iPhone 中键盘的方向

Posted

技术标签:

【中文标题】禁用 iPhone 中键盘的方向【英文标题】:Disable orientation for Keyboard in iPhone 【发布时间】:2011-10-19 23:43:58 【问题描述】:

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

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

如何让键盘保持纵向?

【问题讨论】:

【参考方案1】:

试试这个:

创建一个名为 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]中,当用户关闭键盘或回车时; 您可以恢复到原来的方向。

[ViewController shouldAutoRotateToInterfaceOrientation:previousOrientation];

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

【讨论】:

正如我所说,我希望 ViewController 处于设备方向。无论设备方向如何,我的键盘视图都应始终处于纵向模式。我该怎么做? 键盘的方向由当时设备的方向设置。您必须像上面那样手动设置它,否则它不会改变。另外,出于好奇,您为什么要使用带有横向 UITextField 的水平键盘? 我有一个 UIViewController 并且它的视图必须工作是所有的方向。当用户点击此视图中提供的选项之一时,会显示模态视图控制器,并且其视图具有文本字段。当此文本字段成为第一响应者时,将显示键盘视图。现在,如果用户将方向更改为横向,则呈现的模式视图和键盘不应更改其方向[应始终为纵向]。当模式视图控制器被关闭时,UIViewController vc 应该改变它的方向或者应该是横向的。 查看编辑,这应该是你想要的。它会暂时重新定向 viewController 以便您可以输入纵向,然后返回到原始方向,无论可能是什么。【参考方案2】:

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

[[UIDevice currentDevice] endGeneratingDeviceOrientationNotifications];

【讨论】:

感谢您的回复。我在使用它时遇到了一个问题。如果我禁用通知,现在如果我更改为横向,它会按预期工作。但是,当模式视图控制器被解除时,我的第一个 UIViewController [呈现另一个 UIViewController] 应该处于当前设备方向。因为我们在设备方向改变时禁用了通知,所以我的 UIViewController 不会自动旋转。 我不知道我是否正确理解了您的问题,但如果您只需要在键盘处于活动状态时禁用旋转,请通过观察 UIKeyboardDidShowNotification 将其禁用,然后通过观察 @ 将其重新打开987654323@。希望这会有所帮助。 当然可以在UITextViewDelegate的相应回调方法中进行

以上是关于禁用 iPhone 中键盘的方向的主要内容,如果未能解决你的问题,请参考以下文章

iPhone - 暂时禁用键盘

使用phonegap和jquery mobile开发iphone应用程序时如何禁用本机键盘上的Go按钮?

禁用iPhone 4S /新iPad键盘上的听写按钮

禁用 iPhone 而不是 iPad 的旋转

无法使用Mac键盘在iphone模拟器中键入文本字段?

修改 iPhone 以仅强制横向方向 [重复]