// 键盘弹出改变tableview高度
- (void)registerKeybordNotification {
NSNotificationCenter *notification = [NSNotificationCenter defaultCenter];
[notification removeObserver:self];
[notification addObserver:self
selector:@selector(showKeyboard:)
name:UIKeyboardWillShowNotification
object:nil];
[notification addObserver:self
selector:@selector(hideKeyboard:)
name:UIKeyboardWillHideNotification
object:nil];
#ifdef __IPHONE_5_0
// 5.0以上系统中文键盘高度与4.0系统不一样
float version = [[[UIDevice currentDevice] systemVersion] floatValue];
if (version >= 5.0) {
[notification addObserver:self
selector:@selector(showKeyboard:)
name:UIKeyboardWillChangeFrameNotification
object:nil];
}
#endif
}
- (void)showKeyboard:(NSNotification *)notification {
NSDictionary *userInfo = [notification userInfo];
NSValue *aValue = [userInfo objectForKey:UIKeyboardFrameEndUserInfoKey];
CGFloat keyboardHeight = CGRectGetHeight([aValue CGRectValue]);
CGFloat height = CGRectGetHeight(self.view.frame) - 100 - keyboardHeight;
/* 使用动画效果,过度更加平滑 */
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.1];
{
CGRect rect = _messageListTable.frame;
rect.size.height = height;
NSLog(@"高是11=%f",height);
_messageListTable.frame = rect;
}
[UIView commitAnimations];
}
- (void)hideKeyboard:(NSNotification *)notification {
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.1];
{
CGRect rect = _messageListTable.frame;
rect.size.height = CGRectGetHeight(self.view.frame) - 100;
_messageListTable.frame = rect;
NSLog(@"高是22=%f",rect.size.height);
}
[UIView commitAnimations];
}

本文介绍了一种在iOS应用中实现键盘弹出时自动调整TableView高度的方法。通过注册键盘显示和隐藏的通知,并利用动画效果平滑过渡,确保了用户在输入时界面的良好体验。

2247

被折叠的 条评论
为什么被折叠?



