ios - iPad 中的键盘和移动模式
问题描述
我在formSheet
(或pageSheet
自 iOS 13 起)中遇到了 iPad、键盘和模式的问题。
我正在开发一个聊天,我有一个输入栏,当它出现时,我想将它移到键盘上方,比如 WhatsApp 和类似的。
这是我的代码的简化版本,在接收后调用UIResponder.keyboardDidShowNotification
,是keyboardFrame
键盘的结束框架:
func keyboardDidShow(withFrame keyboardFrame: CGRect, notification: Notification) {
let viewFrame: CGRect
if #available(iOS 11.0, *) {
viewFrame = view.safeAreaLayoutGuide.layoutFrame
} else {
viewFrame = view.frame
}
let convertedKeyboardFrame = view.convert(keyboardFrame, from: nil)
let intersection = viewFrame.intersection(convertedKeyboardFrame)
updateBottomConstraint( // The bottom constraint of the input bar
constant: -intersection.height,
animationDuration: notification.keyboardAnimationDuration
)
}
它适用于所有屏幕尺寸、版本和设备,但带有formSheet
或pageSheet
演示文稿的 iPad 在我的输入栏底部和键盘顶部之间有一个空白区域。
在这种情况下,我的视图控制器向上移动了一点,以便为键盘腾出空间,从而破坏了我的代码。
我不想计算或了解窗口或超级视图,我想依赖布局指南或视图控制器范围内的任何内容。我找不到与此相关的任何信息,我认为这并不奇怪。
任何想法?
解决方案
推荐阅读
- python - 具有阶跃函数的聚合加权和
- php - 我的 ajax 请求响应挂起我的 Firefox 浏览器?
- excel - 有条件地格式化表中的行组
- scala - 当超过 1 个实例可用时,Scala 中的隐式解析
- wpf - 在 Xaml 中,如何将滑块的 Thumb 绑定到多个 ControlTemplate 之一?
- jquery - 如何为它编写 jQuery 包装器和插件?
- html - 使href url动态与角度与两个相同的href链接到单个href链接
- reactjs - Typescript TS2604:JSX 元素类型“抽屉”没有任何构造或调用签名
- c# - 使用异步编程 C# 将哪种数据从 TCP 服务器传输到客户端,为什么?
- visual-studio-code - 有没有办法设置快捷方式来调用 VS Code 中的构建任务?