swift 监听键盘状态

/// 键盘通知

    func doNotic(){

        NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(LoginView.keyboardWillShow(_:)), name: UIKeyboardWillShowNotification, object: nil)

        NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(LoginView.keyboardWillHide(_:)), name: UIKeyboardWillHideNotification, object: nil)

    }

    

    func keyboardWillShow(notification:NSNotification){

        let userInfo : NSDictionary = notification.userInfo!

        self.KeyboardState(true, keyboardInfo: userInfo)

    }

    func keyboardWillHide(notification:NSNotification){

        let userInfo : NSDictionary = notification.userInfo!

        self.KeyboardState(false, keyboardInfo: userInfo)

        

    }

    func KeyboardState(showKeyboard:Bool,keyboardInfo info:NSDictionary){

        // 调整动画

        let rawAnimationCurveValue = (info[UIKeyboardAnimationCurveUserInfoKey] as! NSNumber).integerValue

        let animationCurve = UIViewAnimationCurve (rawValue: rawAnimationCurveValue)

        

        var animationOptions : UIViewAnimationOptions = UIViewAnimationOptions.BeginFromCurrentState

        if (animationCurve == UIViewAnimationCurve.EaseIn) {

            animationOptions = UIViewAnimationOptions.CurveEaseIn;

        }

        else if (animationCurve == UIViewAnimationCurve.EaseInOut) {

            animationOptions = UIViewAnimationOptions.CurveEaseInOut;

        }

        else if (animationCurve == UIViewAnimationCurve.EaseOut) {

            animationOptions = UIViewAnimationOptions.CurveEaseOut;

        }

        else if (animationCurve == UIViewAnimationCurve.Linear) {

            animationOptions = UIViewAnimationOptions.CurveLinear;

        }

        

        

        var finalHeight : CGFloat = 0

        var finalHeightTop : CGFloat = 0

        if (showKeyboard) {

            let keyboardFrameVal:NSValue = info.objectForKey(UIKeyboardFrameEndUserInfoKey) as! NSValue

            let keyboardFrame : CGRect = keyboardFrameVal.CGRectValue()


            let height : CGFloat  = keyboardFrame.size.height-55;

            

            //重新调整

            finalHeight = height

            finalHeightTop = -height

            

        }

        else{

            finalHeight = 0

            finalHeightTop = 0

        }

        self.layoutViewContentBottom.constant = finalHeight;

        self.layoutViewContentTop.constant = finalHeightTop

        self.view_content.setNeedsUpdateConstraints()

        

        

        let animationDuration : NSTimeInterval = (info.objectForKey(UIKeyboardAnimationDurationUserInfoKey)?.doubleValue)!

        UIView.animateWithDuration(animationDuration, delay: 0, options: animationOptions, animations: {

            self.layoutIfNeeded()

            }, completion:{(ss:Bool) in

        

        })

    }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值