首先说明实现方案来自于简书SlimMan的文章,在此感谢他的分享,也感谢原作者codeGlider的分享(原文用的swift);
本文中使用到了一句代码调用注册通知,为什么要使用这个呢 ?因为它使用block添加事件,也不需要手动管理监听对象,so easy !
一句代码调用的原文可以看这里:http://www.jianshu.com/p/70b2503d5fd1
__weak typeof(self)weakSelf = self;
// 显示键盘
[self xw_addNotificationForName:UIKeyboardWillShowNotification block:^(NSNotification * _Nonnull notification) {
// 获取用户信息
NSDictionary *userInfo = [NSDictionary dictionaryWithDictionary:notification.userInfo];
// 获取键盘高度
CGRect keyBoardBounds = [[userInfo objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue];
CGFloat keyBoardHeight = keyBoardBounds.size.height;
// 获取键盘动画时间
CGFloat animationTime = [[userInfo objectForKey:UIKeyboardAnimationDurationUserInfoKey] floatValue];
[UIView animateWithDuration:animationTime animations:^{
weakSelf.mBottomView.transform = CGAffineTransformMakeTranslation(0, -keyBoardHeight);
}];
}];
// 隐藏键盘
[self xw_addNotificationForName:UIKeyboardWillHideNotification block:^(NSNotification * _Nonnull notification) {
// 获取用户信息
NSDictionary *userInfo = [NSDictionary dictionaryWithDictionary:notification.userInfo];
// 获取键盘动画时间
CGFloat animationTime = [[userInfo objectForKey:UIKeyboardAnimationDurationUserInfoKey] floatValue];
[UIView animateWithDuration:animationTime animations:^{
weakSelf.mBottomView.transform = CGAffineTransformIdentity;
}];
}];
注:
记得引入头文件:
#import "NSObject+XWAdd.h"