当键盘出现时,我的 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);