カスタムUITextView(CodeTextView)を含むUIViewControllerがあり、このテキストビューの左側にカスタム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は元の高さにサイズ変更されます。[_linesTableView reloadData]をコメントアウトすると、すべてが正常に機能しています。したがって、LinesTableViewをリロードすると、どういうわけかLinesTableViewとCodeTextViewは元の高さに戻ります。
これを修正する方法がわかりません。難しいことではないと思いますが、これを行う方法を思いつくことはできません。誰かがこれを手伝ってくれませんか?
前もって感謝します!:)