swift -> 监听 键盘 事件获取 键盘 高度

本文介绍了在Swift中如何在`viewDidLoad()`中绑定键盘通知以监听键盘显示,通过`keyboardWillShow`和`KeyboardDidShow`处理动画效果。为了解决可能因第三方输入触发多次通知的问题,提出了获取最近一次键盘高度并在1秒后更新UI的策略。同时,文章提到了在执行动画时可能遇到的问题以及如何使用异步操作解决。此外,还提及了使输入框默认获取焦点的方法。
摘要由CSDN通过智能技术生成

 

一, 在viewDidload() 中 绑定通知,并添加键盘监听

其中绑定的 keyboardWillShow 会有动画, KeyboardDidShow 不会有 动画

func viewDidload(){
	NotificationCenter.default.addObserver(self, selector: #selector(PasscodePane.keyboardWillHide(_:)),name:NSNotification.Name.UIKeyboardWillHide, object: nil)
	NotificationCenter.default.addObserver(self, selector: #selector(PasscodePane.keyboardWillShow(_:)),name:NSNotification.Name.UIKeyboardWillShow, object: nil)
}

//释放
deinit {
	NotificationCenter.default.removeObserver(self, name: NSNotification.Name.UIKeyboardWillHide, object: nil)
	NotificationCenter.default.removeObserver(self, name: NSNotification.Name.UIKeyboardWillShow, object: nil)
}

func keyboardWillShow(_ sender: Notification) {
	//获取键盘的frame
	guard let keyboardFrame = (sender.userInfo?[UIKeyboardFrameEndUserInfoKey] as AnyObject).cgRectValue else {
		return
	}
	//如果边框=0也返回
	if(keyboardFrame.height == nill || keyboardFrame.height == 0){return;}
	UIView.animate(withDuration: 0.1, animations: {
		self.containerCenterConstraint?.update(offset: -keyboardFrame.height/2)
		self.layoutIfNeeded()
	})
}

func keyboardWillHide(_ sender: Notification) {
	UIView.animate(withDuration: 0.1, animations: {
		self.containerCenterConstraint?.update(offset: 0)
	
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值