考慮到項(xiàng)目多處使用監(jiān)聽來處理鍵盤彈出時(shí)的頁面遮擋問題 就講鍵盤監(jiān)聽的響應(yīng)事件用block封裝在工具類中。實(shí)現(xiàn)方法如下
.h文件
//添加鍵盤監(jiān)聽
typedef?void (^keyBoardWillShowAction) (CGFloat?keyBoardHight);
typedef?void (^keyBoardWillDissMissAction) (CGFloat?keyBoardHight);
@property (nonatomic, copy) keyBoardWillShowAction showBlock;
@property (nonatomic, copy) keyBoardWillDissMissAction dissMissBlock;
- (void)addKeyBoardObservershowBlock:(keyBoardWillShowAction)showBlockAction dissMissAction:(keyBoardWillDissMissAction)dissMissAction;
.m文件:
- (void)addKeyBoardObservershowBlock:(keyBoardWillShowAction)showBlockAction dissMissAction:(keyBoardWillDissMissAction)dissMissAction;
{
self.showBlock = showBlockAction;
self.dissMissBlock = dissMissAction;
//監(jiān)聽當(dāng)鍵盤將要出現(xiàn)時(shí)
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(keyboardWillShow:)
name:UIKeyboardWillShowNotification
object:nil];
//監(jiān)聽當(dāng)鍵將要退出時(shí)
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(keyboardWillHide:)
name:UIKeyboardWillHideNotification
object:nil];
}
//當(dāng)鍵盤出現(xiàn)
- (void)keyboardWillShow:(NSNotification *)notification
{
NSDictionary *userInfo = [notification userInfo];
NSValue *value = [userInfo objectForKey:UIKeyboardFrameEndUserInfoKey];
CGRect keyboardRect = [value CGRectValue];
CGFloat height = keyboardRect.size.height;
self.showBlock(height);
}
//當(dāng)鍵退出
- (void)keyboardWillHide:(NSNotification *)notification
{
NSDictionary *userInfo = [notification userInfo];
NSValue *value = [userInfo objectForKey:UIKeyboardFrameEndUserInfoKey];
CGRect keyboardRect = [value CGRectValue];
CGFloat height = keyboardRect.size.height;
self.dissMissBlock(height);
}
使用方法
[[APIString shareInstance] addKeyBoardObservershowBlock:^(CGFloat keyBoardHight) {
????????????[UIView animateWithDuration:0.5 animations:^{
????????//出現(xiàn)時(shí)候的事件
????????}];
} dissMissAction:^(CGFloat keyBoardHight) {
????????[UIView animateWithDuration:0.5 animations:^{
????????//消失時(shí)候的事件
????????}];
}];