5.利用 NSNotificationCenter实现键盘弹出时页面自适应
2015-12-21 01:07
525 查看
在前面的一个小 Demo 里, 我们知道了怎么用UISearchController实现一个本地的搜素引擎, 现在让我们继续来看看接下来的Demo.
PS: 已更新到Swift 2.0, 支持Xcode7, iOS9
获取Bottom属性
定义监听方法
重写viewWillDisappear方法
重写单击的方法
在viewDidLoad中实现
好了, 这次我们就讲到这里, 下次我们继续~~
PS: 已更新到Swift 2.0, 支持Xcode7, iOS9
1.界面布局
使用自动布局给UI控件进行约束获取Bottom属性
2.代码实现
获取Bottom属性@IBOutlet weak var bottomConstraint: NSLayoutConstraint!
定义监听方法
// 3.当键盘开始显示的时候调用 func keyboardWillShow(notification:NSNotification) { adjustingHeight(true, notification: notification) } // 4.当键盘消失的时候调用 func keyboardWillHide(notification:NSNotification) { adjustingHeight(false, notification: notification) } // 5.设置键盘的属性 func adjustingHeight(show:Bool, notification:NSNotification) { // 5.1.在字典中获取通知信息 var userInfo = notification.userInfo! // 5.2.获取键盘的Frame let keyboardFrame:CGRect = (userInfo[UIKeyboardFrameBeginUserInfoKey] as! NSValue).CGRectValue() // 5.3.获取动画时间 let animationDurarion = userInfo[UIKeyboardAnimationDurationUserInfoKey] as! NSTimeInterval // 5.4.设置高度 let changeInHeight = (CGRectGetHeight(keyboardFrame) + 5) * (show ? 1 : -1) // 5.5.使用动画 UIView.animateWithDuration(animationDurarion, animations: { () -> Void in self.bottomConstraint.constant += changeInHeight }) }
重写viewWillDisappear方法
// 6.重写 viewWillDisappear 方法 override func viewWillDisappear(animated: Bool) { // 6.1.删除键盘显示时的观察者 NSNotificationCenter.defaultCenter().removeObserver(self, name: UIKeyboardWillShowNotification, object: nil) // 6.2.删除键盘隐藏时的观察者 NSNotificationCenter.defaultCenter().removeObserver(self, name: UIKeyboardWillHideNotification, object: nil) }
重写单击的方法
// 7.重写点击事件 override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) { // 7.1结束编辑状态 self.view.endEditing(true) }
在viewDidLoad中实现
override func viewDidLoad() { super.viewDidLoad() // 1.添加键盘显示时的观察者 NSNotificationCenter.defaultCenter().addObserver(self, selector: "keyboardWillShow:", name: UIKeyboardWillShowNotification, object: nil) // 2.添加键盘消失时的观察者 NSNotificationCenter.defaultCenter().addObserver(self, selector: "keyboardWillHide:", name: UIKeyboardWillHideNotification, object: nil) }
3.最终的效果
好了, 这次我们就讲到这里, 下次我们继续~~
相关文章推荐
- GUI - Web前端开发框架
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- Android布局的小窍门?
- Web布局连载——两栏固定布局(五)
- 评价ui设计作品好坏的八个标准(界面/交互设计研究)
- 不可修补的 iOS 漏洞可能导致 iPhone 4s 到 iPhone X 永久越狱
- iOS 12.4 系统遭黑客破解,漏洞危及数百万用户
- 每日安全资讯:NSO,一家专业入侵 iPhone 的神秘公司
- [转][源代码]Comex公布JailbreakMe 3.0源代码
- 样式表CSS布局经验
- css网页布局中注意的几个问题小结
- DL.DT.DD实现左右的布局简单例子第1/2页
- 使用CSS框架布局的缺点和优点小结
- div+CSS网页布局的意义与副作用原因小结第1/2页
- 为Yahoo! UI Extensions Grid增加内置的可编辑器
- Android编程之代码创建布局实例分析
- Cocos2d-x UI开发之文本类使用实例
- CSS顶级技巧大放送,div+css布局必知