ios – 当键盘存在时如何使UITextField向上移动?

前端之家收集整理的这篇文章主要介绍了ios – 当键盘存在时如何使UITextField向上移动?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
如何防止键盘隐藏UITextField?

解决方法

我假设这是在UIViewController上发生的.如果是这样,您可以设置在键盘显示/隐藏时调用以下2个函数,并在其块中进行适当响应.

设置UIViewController:

class XXXViewController: UIViewController,UITextFieldDelegate... {

    var frameView: UIView!

首先,在ViewDidLoad中:

override func viewDidLoad() {

    self.frameView = UIView(frame: CGRectMake(0,self.view.bounds.width,self.view.bounds.height))


    // Keyboard stuff.
    let center: NSNotificationCenter = NSNotificationCenter.defaultCenter()
        center.addObserver(self,selector: #selector(ATReportContentViewController.keyboardWillShow(_:)),name: UIKeyboardWillShowNotification,object: nil)
    center.addObserver(self,selector: #selector(ATReportContentViewController.keyboardWillHide(_:)),name: UIKeyboardWillHideNotification,object: nil)
}

然后实现以下2个函数以响应上面ViewDidLoad中定义的NSNotificationCenter函数.我给你一个移动整个视图的例子,但你也可以只为UITextFields制作动画.

func keyboardWillShow(notification: NSNotification) {
    let info:NSDictionary = notification.userInfo!
    let keyboardSize = (info[UIKeyboardFrameBeginUserInfoKey] as! NSValue).CGRectValue()

    let keyboardHeight: CGFloat = keyboardSize.height

    let _: CGFloat = info[UIKeyboardAnimationDurationUserInfoKey] as! NSNumber as CGFloat


    UIView.animateWithDuration(0.25,delay: 0.25,options: UIViewAnimationOptions.CurveEaseInOut,animations: {
        self.frameView.frame = CGRectMake(0,(self.frameView.frame.origin.y - keyboardHeight),self.view.bounds.height)
        },completion: nil)

}

func keyboardWillHide(notification: NSNotification) {
    let info: NSDictionary = notification.userInfo!
    let keyboardSize = (info[UIKeyboardFrameBeginUserInfoKey] as! NSValue).CGRectValue()

    let keyboardHeight: CGFloat = keyboardSize.height

    let _: CGFloat = info[UIKeyboardAnimationDurationUserInfoKey] as! NSNumber as CGFloat

    UIView.animateWithDuration(0.25,(self.frameView.frame.origin.y + keyboardHeight),completion: nil)

}

不要忘记在离开视图时删除通知

override func viewWillDisappear(animated: Bool) {
    NSNotificationCenter.defaultCenter().removeObserver(self,object: nil)
    NSNotificationCenter.defaultCenter().removeObserver(self,object: nil)
}

猜你在找的iOS相关文章