禁用 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 中键盘的方向的主要内容,如果未能解决你的问题,请参考以下文章