1.注册键盘变化监听事件
监听键盘将要弹出
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWasShown:) name:UIKeyboardWillShowNotification object:nil];
监听键盘将要隐藏
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWasHidden:) name:UIKeyboardWillHideNotification object:nil];
2.实现监听事件,根据键盘变化做出响应的动画
- (void) keyboardWasShown:(NSNotification *)notification
{
NSDictionary *info = [notification userInfo];
NSValue *value = [info objectForKey:UIKeyboardFrameBeginUserInfoKey];
CGSize keyboardSize = [value CGRectValue].size; //获取得到键盘开始动画时候的尺寸
NSValue *endValue = [info objectForKey:UIKeyboardFrameEndUserInfoKey];
CGSize keyboardEndSize = [endValue CGRectValue].size; //获取得到键盘动画结束时候的尺寸,可以根据尺寸的变化动态调整输入框的位置
}
- (void) keyboardWasHidden:(NSNotification *) notification
{
NSDictionary *info = [notification userInfo];
NSValue *value = [info objectForKey:UIKeyboardFrameBeginUserInfoKey];
CGSize keyboardSize = [value CGRectValue].size;
}
UIKIT_EXTERN NSString *const UIWindowDidBecomeVisibleNotification;// window可见时候的事件
UIKIT_EXTERN NSString *const UIWindowDidBecomeHiddenNotification; // wido隐藏时候的事件
UIKIT_EXTERN NSString *const UIWindowDidBecomeKeyNotification; // 键盘可见响应事件
UIKIT_EXTERN NSString *const UIWindowDidResignKeyNotification; // 键盘隐藏响应事件
// Each notification includes a nil object and a userInfo dictionary containing the
// begining and ending keyboard frame in screen coordinates. Use the various UIView and
// UIWindow convertRect facilities to get the frame in the desired coordinate system.
// Animation key/value pairs are only available for the "will" family of notification.
UIKIT_EXTERN NSString *const UIKeyboardWillShowNotification;
UIKIT_EXTERN NSString *const UIKeyboardDidShowNotification;
UIKIT_EXTERN NSString *const UIKeyboardWillHideNotification;
UIKIT_EXTERN NSString *const UIKeyboardDidHideNotification;
UIKIT_EXTERN NSString *const UIKeyboardFrameBeginUserInfoKey //获取键盘动画开始时的CGRect
UIKIT_EXTERN NSString *const UIKeyboardFrameEndUserInfoKey //获取键盘动画结束时的CGRect
UIKIT_EXTERN NSString *const UIKeyboardAnimationDurationUserInfoKey //获取键盘动画的时间
UIKIT_EXTERN NSString *const UIKeyboardAnimationCurveUserInfoKey
// Like the standard keyboard notifications above, these additional notifications include
// a nil object and begin/end frames of the keyboard in screen coordinates in the userInfo dictionary.
UIKIT_EXTERN NSString *const UIKeyboardWillChangeFrameNotification
UIKIT_EXTERN NSString *const UIKeyboardDidChangeFrameNotification
// These keys are superseded by UIKeyboardFrameBeginUserInfoKey and UIKeyboardFrameEndUserInfoKey.
UIKIT_EXTERN NSString *const UIKeyboardCenterBeginUserInfoKey
UIKIT_EXTERN NSString *const UIKeyboardCenterEndUserInfoKey
UIKIT_EXTERN NSString *const UIKeyboardBoundsUserInfoKey