ios - 设备旋转后 UIKeyboard 高度不同

标签 ios swift ipad rotation uikeyboard

我遇到的问题是设备旋转后键盘高度:

guard let keyboardSize = sender.userInfo?[UIKeyboardFrameBeginUserInfoKey] as? NSValue else { return }

let keyboardHeight = keyboardSize.cgRectValue.height

与正常值不同。正常键盘高度(在测试设备上)为 398,旋转后高度为 142。

更多上下文:

我编写了一个仅适用于 iPad 的应用程序,它的 View 始终应保持在中心 (Y),即使显示键盘也是如此。对于这种情况,我将中心 Y 约束作为导出。我为 UIKeyboardWillShowUIKeyboardWillHide 通知注册了我的 ViewController。当隐藏通知被调用时,我将约束常量设置为 0。当显示通知被调用时,我根据剩余的 View 空间计算新的中心 Y (view.height - keyboard.height)。

当第一次调用 UIKeyboardWillShow 时,一切正常。但是在我旋转设备后,键盘高度不同,我的计算给出了错误的值。

如何在显示键盘的情况下正确计算旋转后的中心 Y?

最佳答案

Farhan Arshad 是正确的,UIKeyboardFrameEndUserInfoKey 会给你更好的结果,但它并没有解决你提到的问题。

当您注册 UIKeyboardWillShow(或 UIKeyboardWillChangeFrame)时,当您从纵向旋转到横向时,您实际上会收到多个通知。第一个通知的键盘高度为 142 像素,第二个通知的键盘高度为 398 像素。将第二个通知用于您的约束值,它应该可以解决您的问题。

关于ios - 设备旋转后 UIKeyboard 高度不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49570423/

相关文章:

ios - 具有自动布局和 UITableAutomaticDimension 的动态高度表单元格(动态 UILabel + 几个 UIImageViews)

ios - ios iPhone模拟器是否导致内存使用分析膨胀?

Swift:根据屏幕尺寸动态约束按钮尺寸

iphone - 为什么我的模态视图没有显示在我的 iOS 应用程序中?

ios - 我们如何使用自动布局提供按钮之间的水平间距(视觉格式的约束)

objective-c - 使用多线程加载 JSON 数据

iphone - 为 iOS 模拟器设置默认比例

ios - 在模态视图 Controller 上呈现整个屏幕 View Controller

ios - MBProgressHud.h 文件未找到

ios - 如何在swift中根据标签高度制作可伸缩图像