在前面, 我们实现过一个在ViewController里的键盘自适应, 现在让我们来看看在UIScrollView是怎么实现键盘自适应的.
PS: 已经更新到Swift 2.0, 支持Xcode7, iOS9
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.最终效果
好了, 这次就讲到这里, 下次我们继续