做输入类页面的时候,经常要监听键盘弹起、收起的事件,对内容(一般是ScorllView)进行重新的布局,防止输入框被挡住。
下面的代码就是键盘事件通知的示例,供大家参考
首先,添加和移除通知
- (void)viewDidAppear:(BOOL)animated{
[super viewDidAppear:animated];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(keyboardWillShow:)
name:UIKeyboardWillShowNotification
object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(keyboardWillHide:)
name:UIKeyboardWillHideNotification
object:nil];
}
- (void)viewDidDisappear:(BOOL)animated {
[super viewDidDisappear:animated];
[[NSNotificationCenter defaultCenter] removeObserver:self
name:UIKeyboardWillShowNotification
object:nil];
[[NSNotificationCenter defaultCenter] removeObserver:self
name:UIKeyboardWillHideNotification
object:nil];
}
之后,响应通知
- (void)keyboardWillShow:(NSNotification *)notification {
NSDictionary *userInfo = [notification userInfo];
NSValue *aValue = [userInfo objectForKey:UIKeyboardFrameEndUserInfoKey];
CGRect keyboardRect = [aValue CGRectValue];
keyboardRect = [self.view convertRect:keyboardRect fromView:nil];
keyboardHeight = keyboardRect.size.height;
CGRect frame = self.view.bounds;
frame.size.height -= keyboardHeight;
self.contentScrollView.frame = frame;
self.contentScrollView.contentSize = CGSizeMake(SCREEN_WIDTH, CGRectGetMaxY(self.confirmBtn.frame)+ 20);
}
- (void)keyboardWillHide:(NSNotification *)notification {
keyboardHeight = 0;
self.contentScrollView.frame = self.view.bounds;
// self.contentScrollView.contentSize = self.view.bounds.size;
}
热门评论
好
挺好的文章
好