首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >键盘打开时移动菜单(Swift)

键盘打开时移动菜单(Swift)
EN

Stack Overflow用户
提问于 2020-02-21 11:14:35
回答 2查看 152关注 0票数 1

我的函数"keyboardWillShown“有问题。所以我想要的是,当我的菜单打开时,它就会出现在键盘上方。它在Iphone 8+,8,7,6上运行得很好。但是当我在模拟器上运行Iphone 11时,结果如下。

Iphone 11的外观图片

约束

这是我的密码:

代码语言:javascript
运行
复制
@objc func keyboardWillShown(notification: NSNotification) {
    let info = notification.userInfo!
    let keyboardFrame: CGRect = (info[UIResponder.keyboardFrameEndUserInfoKey] as! NSValue).cgRectValue

    UIView.animate(withDuration: 0.1, animations: { () -> Void in
        self.keyboardConstrains.constant = keyboardFrame.size.height
    })
}

呼叫功能

代码语言:javascript
运行
复制
override func viewWillAppear(_ animated: Bool) {
    NotificationCenter.default.addObserver( self, selector: #selector(keyboardWillShown(notification:)), name:  UIResponder.keyboardWillShowNotification, object: nil )
}

override func viewWillDisappear(_ animated: Bool) {
    NotificationCenter.default.removeObserver( self,name:  UIResponder.keyboardWillShowNotification, object: nil )
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-02-21 11:21:34

可以根据屏幕大小设置约束。

代码语言:javascript
运行
复制
if self.view.height >= 800{ //For bigger screens (X ,11)
    self.keyboardConstrains.constant = keyboardFrame.size.height - 50
} else {
    self.keyboardConstrains.constant = keyboardFrame.size.height
}
票数 1
EN

Stack Overflow用户

发布于 2020-02-21 11:43:44

代码语言:javascript
运行
复制
let window = UIApplication.shared.keyWindow
let bottomPadding = window?.safeAreaInsets.bottom
keyboardConstrains.constant = (keyboardSize?.height)! - (bottomPadding ?? 0)

这是因为所有的凹槽iPhone(X,Xr,iPhone11等)底部都有安全区域,所以键盘的高度是从主视图计算出来的,所以你要从安全区域设置"keyboardConstrains“,这就是为什么这个空间即将到来的原因。要删除这个空格,您必须检查底部是否有安全区域,而不是从键盘高度减去底部空间。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60337511

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档