语法变动
注:
name
变动 如下
NotificationCenter.default.addObserver(self,
selector: #selector(keyBoardWillShow(notification:)), name: UIResponder.keyboardWillShowNotification,
object: nil)
以下是相关的key
public class let keyboardWillShowNotification: NSNotification.Name
public class let keyboardDidShowNotification: NSNotification.Name
public class let keyboardWillHideNotification: NSNotification.Name
public class let keyboardDidHideNotification: NSNotification.Name
相关通知
// MARK: - 键盘即将弹出
NotificationCenter.default.addObserver(self,
selector: #selector(keyBoardWillShow(notification:)), name: NSNotification.Name.UIKeyboardWillShow,
object: nil)
// MARK: - 键盘即将回收
NotificationCenter.default.addObserver(self,
selector: #selector(keyBoardWillHide(notification:)), name: NSNotification.Name.UIKeyboardWillHide,
object: nil)
处理对应事件
// MARK: - 键盘即将弹出
@objc func keyBoardWillShow(notification: Notification) {
let userInfo = notification.userInfo! as Dictionary
let value = userInfo[UIKeyboardFrameEndUserInfoKey] as! NSValue
let keyBoardRect = value.cgRectValue
// 得到键盘高度
let keyBoardHeight = keyBoardRect.size.height
// 得到键盘弹出所需时间
let duration = userInfo[UIKeyboardAnimationDurationUserInfoKey] as! NSNumber
}
// MARK: - 键盘即将回收
@objc func keyBoardWillHide(notification: Notification) {
let userInfo = notification.userInfo! as Dictionary
let value = userInfo[UIKeyboardFrameEndUserInfoKey] as! NSValue
let keyBoardRect = value.cgRectValue
// 得到键盘高度
let keyBoardHeight = keyBoardRect.size.height
// 得到键盘弹出所需时间
let duration = userInfo[UIKeyboardAnimationDurationUserInfoKey] as! NSNumber
}
删除键盘监听
deinit {
HWPrint("释放")
// 删除键盘监听
HWPrint("删除键盘监听")
NotificationCenter.default.removeObserver(self)
}
未整理
// MARK: - 键盘事件
func initKeyboardObserver() {
NotificationCenter.default.removeObserver(self)
NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillShow(notification:)), name: NSNotification.Name.UIKeyboardWillShow, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(keyboardDidShow(notification:)), name: NSNotification.Name.UIKeyboardDidShow, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillHide(notification:)), name: NSNotification.Name.UIKeyboardWillHide, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(keyboardDidHide(notification:)), name: NSNotification.Name.UIKeyboardDidHide, object: nil)
}
@objc func keyboardWillShow(notification:NSNotification){
weak var weakSelf = self // 弱引用
//获取userInfo
let kbInfo = notification.userInfo
//获取键盘的size
let kbRect = (kbInfo?[UIKeyboardFrameEndUserInfoKey] as? NSValue)?.cgRectValue
//键盘弹出的时间
let duration = kbInfo?[UIKeyboardAnimationDurationUserInfoKey] as? Double
if duration != nil {
UIView.animate(withDuration: duration!, animations: {
weakSelf!.frame = CGRect(x: 0, y: (weakSelf!.HWScreenH()-205-kbRect!.size.height), width: weakSelf!.HWScreenW(), height: 205)
weakSelf!.layoutIfNeeded()
weakSelf!.layoutSubviews()
})
} else {
UIView.animate(withDuration: 2.5, animations: {
weakSelf!.frame = CGRect(x: 0, y: (weakSelf!.HWScreenH()-205-260), width: weakSelf!.HWScreenW(), height: 205)
weakSelf!.layoutIfNeeded()
weakSelf!.layoutSubviews()
})
}
}
@objc func keyboardDidShow(notification:NSNotification){
}
@objc func keyboardWillHide(notification:NSNotification){
weak var weakSelf = self // 弱引用
UIView.animate(withDuration: 3, animations: {
weakSelf!.frame = CGRect(x: 0, y: (weakSelf!.HWScreenH()-205), width: weakSelf!.HWScreenW(), height: 205)
weakSelf!.layoutIfNeeded()
weakSelf!.layoutSubviews()
})
}
@objc func keyboardDidHide(notification:NSNotification){
}