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
})
}
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
})
}
相关文章推荐
- swift pageScrollView
- Swift UI
- Swift5
- Swift4
- Swift3
- Swift -- 4.流程控制
- Swift 2
- Swift 1
- swift----设置图片圆角
- swift中的convenience
- 从Android到Swift iOS开发:语言与框架对比
- swift开发 创建Extension(即OC中的category)
- swift的willSet、didSet、get、set函数
- [swift学习之三]枚举练习
- Swift重载和自定义运算符
- Swift_关键字static和class的区别
- Swift笔记-让你2小时学会Swift
- Swift-字典
- Swift 泛型(十九)
- 浅谈 Swift 中的泛型