現在設定されているので、UIScrollView内に2つのUITextViewがあります。これのポイントは、UITextView自体はスクロールせず、テキストが追加されるにつれて大きくなる(コンテンツサイズ)だけであるということです。UIScrollViewは、テキストの量に関係なく、ビューの上下のスクロールをすべて処理します(件名ビューがメッセージビューの上にあるMail.appと同様に考えてください)。そうは言っても、私は今問題に遭遇しました。プログラムでUITextView(このコードではbodyText)にテキストを追加すると、何らかの理由でUIScrollViewが自動的に一番下までスクロールします。
テキストを追加するには、次のようにします。
NSRange selectedRange = [bodyText selectedRange];
NSString *selectedText = [bodyText.text substringWithRange:selectedRange];
bodyText.text = [bodyText.text stringByReplacingCharactersInRange:selectedRange withString:[NSString stringWithFormat:@"<b>%@</b>", selectedText]];
したがって、たとえば、テキストの垂直方向に2000ピクセルがあり、現在400の位置までスクロールしてから、その周りのどこかにテキストを追加した場合、UIScrollViewは2000まで下がります。
UISCrollViewをサブクラス化し、-setContentOffsetをオーバーライドして停止しようとしましたが、すべてのスクロールがフリーズします。
私の質問は、そもそもなぜそれが一番下までスクロールするのかということです。ユーザーが画面上の別の場所にあるボタンをクリックするとテキストが追加され、スクロールは指のドラッグなどとは関係ありません。