键盘监听的使用
来源:互联网 发布:如何应用安卓源码 编辑:程序博客网 时间:2024/06/06 08:23
在实际开发中监听键盘弹出,让某一个View或者是TextField跟随键盘移动,这样的情况非常普遍。在这里自己总结一下,帮助自己复习,另外也起到一个备忘的作用吧。
方案如下,可能不是最好,但是在没有发现更好的方法前就用这个吧。
第一步:创建添加监听事件方法
func addKeyboardObserver() { NSNotificationCenter.defaultCenter().addObserver(self, selector: "keyboardWillShow:", name: UIKeyboardWillShowNotification, object: nil) NSNotificationCenter.defaultCenter().addObserver(self, selector: "keyboardWillHide:", name: UIKeyboardWillHideNotification, object: nil) }
创建监听方法,在设置监听的位置调用,当然可以在viewDidload或者willDidload中直接添加也可以,我个人的习惯是,能写成方法的就尽量写成方法,以后复制粘贴比较方便
第二步:创建删除监听事件方法
func removeKeyboardObserver() { NSNotificationCenter.defaultCenter().removeObserver(self) }
添加完之后,就立刻写一个删除监听的方法与其对应起来
第三步:实现监听中声明的方法
func keyboardWillShow(sender: NSNotification) { guard let userInfo = sender.userInfo else { return } guard let keyboardSize = userInfo[UIKeyboardFrameEndUserInfoKey]?.CGRectValue else { return } guard let keyboardDuration = userInfo[UIKeyboardAnimationDurationUserInfoKey]?.doubleValue else { return } guard let keyboardCurve = userInfo[UIKeyboardAnimationCurveUserInfoKey]?.intValue else { return } searchBarConstraint.constant = keyboardSize.height UIView.animateWithDuration(keyboardDuration, delay: 0, options: UIViewAnimationOptions(rawValue: UInt(keyboardCurve)), animations: { self.view.layoutIfNeeded() }, completion: nil) } func keyboardWillHide(sender: NSNotification) { guard let userInfo = sender.userInfo else { return } guard let keyboardDuration = userInfo[UIKeyboardAnimationDurationUserInfoKey]?.doubleValue else { return } guard let keyboardCurve = userInfo[UIKeyboardAnimationCurveUserInfoKey]?.intValue else { return } searchBarConstraint.constant = 0 UIView.animateWithDuration(keyboardDuration, delay: 0, options: UIViewAnimationOptions(rawValue: UInt(keyboardCurve)), animations: { self.view.layoutIfNeeded() }, completion: nil) }
从userInfo 中提取到键盘的高度,运动的时间,运动的模式。然后设置layout的属性,这里设置的是从storyboard中拖线过来的约束,根据userInfo中的属性来设置约束,并动画改变,这样一来就可以让某个View跟随键盘上下滚动了。
0 0
- 键盘监听的使用
- 键盘的监听
- 键盘的监听
- 监听键盘的事件
- textField的键盘监听
- 通知的使用和通知对键盘的监听
- 使用JS监听键盘两个组合键触发的事件
- C#全局键盘监听(Hook)的使用
- 使用JS监听键盘两个组合键触发的事件
- C#全局键盘监听(Hook)的使用
- 使用JS监听键盘两个组合键触发的事件
- 使用JS监听键盘两个组合键触发的事件
- JS键盘监听事件的键盘码
- JS键盘监听事件的键盘码
- JS键盘监听事件的键盘码
- JS键盘监听事件的键盘码
- 一个键盘监听的例子
- 对弹出键盘的监听
- Android开发之百度地图
- solr5.2.1+tomcat7.0.63安装
- UNIX Tutorial Six_Other useful UNIX commands
- 简单工厂模式
- scanner.next()与scanner.nextLine()的区别
- 键盘监听的使用
- PHP:基于XML的在线小词典案例
- Vim Nerdtree快捷键
- 百度地图Javascript SDK
- jdk旧版本下载地址
- c排序算法总结
- java annotation基本概念
- Linux下如何搭建VPN服务器
- hdu 5416 CRB and Tree(2015 Multi-University Training Contest 10)