Objective c 按enter键时自定义UITextView大小调整

Objective c 按enter键时自定义UITextView大小调整,objective-c,ios,uitableview,resize,uitextview,Objective C,Ios,Uitableview,Resize,Uitextview,我有一个UIViewController,其中有一个自定义UITextView(CodeTextView),在这个文本视图的左侧有一个自定义UITableView(LinesTableView)。LinesTableView包含与CodeTextView对齐的行号 当我开始编辑CodeTextView和键盘出现时,我编辑两个视图的大小: - (void)keyboardAppears:(NSNotification *)notification { [_codeTextView setF

我有一个UIViewController,其中有一个自定义UITextView(CodeTextView),在这个文本视图的左侧有一个自定义UITableView(LinesTableView)。LinesTableView包含与CodeTextView对齐的行号

当我开始编辑CodeTextView和键盘出现时,我编辑两个视图的大小:

- (void)keyboardAppears:(NSNotification *)notification
{
    [_codeTextView setFrame:CGRectMake(30, 0, 290, self.view.frame.size.height - 216.0f)];
    [_linesTableView setFrame:CGRectMake(0, 0, 30, self.view.frame.size.height - 216.0f)];
}
编辑CodeTextView和按下按钮时,我会更新LinesTableView:

- (void)updateLines
{
    NSString *plainText = self.text;
    NSArray *components = [plainText componentsSeparatedByString:@"\n"];
    int lines = components.count;
    if([[components lastObject] isEqualToString:@""]) lines--;
    _linesTableView.lines = lines;
    [_linesTableView reloadData];
}
但是,当显示键盘并按enter键时,CodeTextView的大小将调整为其原始高度!当我注释掉[\u linesTableView reloadData]时,一切正常。因此,当我重新加载LinesTableView时,LinesTableView和CodeTextView以某种方式恢复了其原始高度

我不知道怎么解决这个问题。我认为这并不难,但我想不出一个办法来做到这一点。谁能帮我一下吗


提前感谢!:)

快速而肮脏的方法是将这两个东西放在一个包装它们的UIView中,这样您就可以调整UIView的大小并使其剪辑其内容,而不必调整实际表的大小。这样,当重新加载数据时,即使视图再次放大,它也会保持剪裁。在我看来,如果您使用UIScrollView并将2个非滚动组件放在其中,它看起来会更好。这样,键盘占据的位置不会破坏用户体验。

我现在将两个视图都放在一个UIView中,但当我调整此视图的大小时,其中的两个视图的大小保持不变。我已经选中了“自动调整子视图大小”和“剪辑子视图”框。以编程方式调整高度也不起作用。你知道为什么吗?