当键盘出现时,我的 table 视图会自动调整大小
My table view automatically resize when keyboard appear
我正在聊天 app.When 我的键盘出现了 我想调整 table 视图 和 文本视图根据键盘边框。
问题是当我的键盘出现时,我的 table 视图会自动调整大小和重新定位。
我的代码是..
-(void)KeyboardWillShow:(NSNotification *)keyboardInfo
{
@try {
NSDictionary *userInfo = keyboardInfo.userInfo;
// Get keyboard size.
NSValue *endFrameValue = userInfo[UIKeyboardFrameEndUserInfoKey];
CGRect keyboardEndFrame = [self.view convertRect:endFrameValue.CGRectValue fromView:nil];
// Get keyboard animation.
NSNumber *durationValue = userInfo[UIKeyboardAnimationDurationUserInfoKey];
NSTimeInterval animationDuration = durationValue.doubleValue;
NSNumber *curveValue = userInfo[UIKeyboardAnimationCurveUserInfoKey];
UIViewAnimationCurve animationCurve = curveValue.intValue;
[UIView animateWithDuration:animationDuration delay:0.0 options:(animationCurve<<16) animations:^{
[self.messageView setFrame:CGRectMake(self.messageView.frame.origin.x, self.view.frame.size.height-keyboardEndFrame.size.height-self.messageView.frame.size.height, self.messageView.frame.size.width, self.messageView.frame.size.height)];
[self.tableView setFrame:CGRectMake(self.tableView.frame.origin.x, self.tableView.frame.origin.y, self.tableView.frame.size.width, self.view.frame.size.height-keyboardEndFrame.size.height-self.messageView.frame.size.height-self.tableView.frame.origin.y)];
} completion:nil];
}
@catch (NSException *exception) {
NSLog(@"Error in func:%s, line:%d with reason:%@",__func__,__LINE__,exception.reason);
}
}
]2
获取 tableview 底部约束的出口并以编程方式更改它
tablebottomConstraint.constant = keyboardEndFrame.size.height+self.messageView.frame.size.height
您可以使用 table 插图,修改 tableView 内容的底部插图:
self.tableView.contentInset = UIEdgeInsetsMake(0, 0, keyboardEndFrame.size.height + self.messageView.frame.size.height, 0);
我正在聊天 app.When 我的键盘出现了 我想调整 table 视图 和 文本视图根据键盘边框。
问题是当我的键盘出现时,我的 table 视图会自动调整大小和重新定位。
我的代码是..
-(void)KeyboardWillShow:(NSNotification *)keyboardInfo
{
@try {
NSDictionary *userInfo = keyboardInfo.userInfo;
// Get keyboard size.
NSValue *endFrameValue = userInfo[UIKeyboardFrameEndUserInfoKey];
CGRect keyboardEndFrame = [self.view convertRect:endFrameValue.CGRectValue fromView:nil];
// Get keyboard animation.
NSNumber *durationValue = userInfo[UIKeyboardAnimationDurationUserInfoKey];
NSTimeInterval animationDuration = durationValue.doubleValue;
NSNumber *curveValue = userInfo[UIKeyboardAnimationCurveUserInfoKey];
UIViewAnimationCurve animationCurve = curveValue.intValue;
[UIView animateWithDuration:animationDuration delay:0.0 options:(animationCurve<<16) animations:^{
[self.messageView setFrame:CGRectMake(self.messageView.frame.origin.x, self.view.frame.size.height-keyboardEndFrame.size.height-self.messageView.frame.size.height, self.messageView.frame.size.width, self.messageView.frame.size.height)];
[self.tableView setFrame:CGRectMake(self.tableView.frame.origin.x, self.tableView.frame.origin.y, self.tableView.frame.size.width, self.view.frame.size.height-keyboardEndFrame.size.height-self.messageView.frame.size.height-self.tableView.frame.origin.y)];
} completion:nil];
}
@catch (NSException *exception) {
NSLog(@"Error in func:%s, line:%d with reason:%@",__func__,__LINE__,exception.reason);
}
}
获取 tableview 底部约束的出口并以编程方式更改它
tablebottomConstraint.constant = keyboardEndFrame.size.height+self.messageView.frame.size.height
您可以使用 table 插图,修改 tableView 内容的底部插图:
self.tableView.contentInset = UIEdgeInsetsMake(0, 0, keyboardEndFrame.size.height + self.messageView.frame.size.height, 0);