15.使用UIScrollView实现键盘自适应

来源:互联网 发布:openstack ubuntu 源 编辑:程序博客网 时间:2024/05/18 18:21

在前面, 我们实现过一个在ViewController里的键盘自适应, 现在让我们来看看在UIScrollView是怎么实现键盘自适应的.

PS: 已经更新到Swift 2.0, 支持Xcode7, iOS9


1.界面布局

1


2.实现代码

关联控件

class ViewController: UIViewController, UITextFieldDelegate {     @IBOutlet weak var textFieldOne: UITextField!     @IBOutlet weak var textFieldTwo: UITextField!     @IBOutlet weak var textFieldThree: UITextField!     @IBOutlet weak var textFieldFor: UITextField!     @IBOutlet weak var textFieldFive: UITextField!     @IBOutlet weak var myScrollView: UIScrollView! }

设置NSNotificationCenter

override func viewDidLoad() {     super.viewDidLoad()     // 3.实现UITextField代理     textFieldOne.delegate = self     textFieldTwo.delegate = self     textFieldThree.delegate = self     textFieldFor.delegate = self     textFieldFive.delegate = self     // 4.自定义NSNotifacationCenter     NSNotificationCenter.defaultCenter().addObserver(self, selector: "keyboardWillShow:", name: UIKeyboardWillShowNotification, object: nil)     NSNotificationCenter.defaultCenter().addObserver(self, selector: "keyboardWillHide:", name: UIKeyboardWillHideNotification, object: nil) } // 5.自定义当键盘出现时的方法, 参数为NSNotification func keyboardWillShow(notification: NSNotification) {     adjustingHeight(true, notification: notification) } // 6.自定义当键盘消失时的方法, 参数为NSNotification func keyboardWillHide(notification: NSNotification) {     adjustingHeight(false, notification: notification) } // 7.自定义自适应高度方法 func adjustingHeight(show: Bool, notification: NSNotification) {     // 7.1获取userInfo     let userInfo = notification.userInfo!     // 7.2获取键盘的Frame     let keyboardFrame = (userInfo[UIKeyboardFrameBeginUserInfoKey] as! NSValue).CGRectValue()     // 7.3获取显示键盘和消失键盘的高度     let changeInHeight = (CGRectGetHeight(keyboardFrame) + 5) * (show ? 1 : -1)     // 7.4设置向下偏移量     myScrollView.contentInset.bottom += changeInHeight     // 7.5设置向下添加偏移量     myScrollView.scrollIndicatorInsets.bottom += changeInHeight }

实现UITextField的代理方法

// 8.UITextField代理方法, 当点击return键时, 就执行 func textFieldShouldReturn(textField: UITextField) -> Bool {     // 8.1self.view取消编辑状态     self.view.endEditing(true)     // 8.2返回true     return true }

3.最终效果

0


好了, 这次就讲到这里, 下次我们继续

0 0
原创粉丝点击