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

在前面, 我们实现过一个在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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值