2

UITextView入力されたテキストに応じて、プログラムでサイズを大きくしようとしています。問題は、textViewDidChange:改行文字を入力した後に何かを入力した場合にのみ改行文字を認識することです。たとえば、次のように入力しようとしています。

こんにちは、私の名前はジミーです。

これは、NSLog でこれを印刷すると得られるものですtextViewDidChange:

Log: H
Log: Hi
Log: Hi,
Log: Hi, m
Log: Hi, my
Log: Hi, my (here goes the new line, but it's not recognized)
Log: Hi, my
 n (it's recognized on this line, only after something is inputted after it).

2 つの改行を入力しようとすると、最初の改行のみが認識され、2 番目の改行を入力した後にのみ認識されます。これはある種のバグですか、それとも何か不足していますか? これを修正する方法はありますか? これは、iOS 6 で正しく動作していました。

編集 - 問題をもう少し明確にするために、テキストが変更されたことが通知されます。問題は、新しいテキストが改行ではなく空の文字であることです。

編集 - 現在、UITextView の適切なサイズを見つける唯一の適切な方法はsizeThatFits:、境界サイズを渡しながらそのメソッドを使用することです。また、UITextViewのプロポーションをプログラムで変更する場合は、自動サイズ変更マスクを削除することをお勧めします。

4

1 に答える 1

3

iOS 6 と iOS 7 の両方で動作します。NSLog はログの最後に期待どおりに新しい行を表示しない場合があることに注意してくださいtextView.text

- (void)textViewDidChange:(UITextView *)textView
{
    NSLog(@"TextView text changed to: \"%@\"", textView.text);
}

本当に新しい行が記録されない場合は、報告する必要があるバグのように思えます。

于 2013-09-20T14:21:30.870 に答える