贡献作者 -【XJDomain】
博客XJ: https://my.oschina.net/shengbingli/blog
GitHub: https://github.com/lishengbing/XJQRCodeToolDemo
注意⚠️:
在接受通知的时候需要移除通知:
// 移除通知<通知移除是在发通知控制器中移除>
deinit {
NotificationCenter.default.removeObserver(self)
}
接受键盘通知方法
// 监听键盘通知
NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillChangeFrame(note:)), name:.UIKeyboardWillChangeFrame , object: nil)
// 键盘通知监听
@objc fileprivate func keyboardWillChangeFrame(note : Notification) {
// 获取动画执行的时间
let duration = note.userInfo?["UIKeyboardAnimationDurationUserInfoKey"] as! TimeInterval
// 获取键盘最终Y值 不能转成NSRect
let endFrame = (note.userInfo?["UIKeyboardFrameEndUserInfoKey"] as! NSValue).cgRectValue
let y = endFrame.origin.y
// 计算工具栏距离底部的间距
let margin = kScreenH - y
toolBarCons.constant = margin
UIView.animate(withDuration: duration) {
self.view.layoutIfNeeded()
}
}