您的位置:首页 > 移动开发 > Swift

swift 监听键盘状态

2016-05-05 16:53 489 查看
/// 键盘通知

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

})

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: