1

現在設定されているので、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をオーバーライドして停止しようとしましたが、すべてのスクロールがフリーズします。

私の質問は、そもそもなぜそれが一番下までスクロールするのかということです。ユーザーが画面上の別の場所にあるボタンをクリックするとテキストが追加され、スクロールは指のドラッグなどとは関係ありません。

4

1 に答える 1

0

スクロールビュープログラミングガイドでは、次のようになります。

長方形を表示する

長方形の領域をスクロールして表示することもできます。これは、アプリケーションが現在表示領域の外側にあるコントロールを表示ビューに表示する必要がある場合に特に便利です。scrollRectToVisible:animated:メソッドは、指定された長方形をスクロールして、スクロールビュー内に表示されるようにします。アニメーション化されたパラメータがYESの場合、長方形は一定のペースでスクロールされて表示されます。setContentOffset:animated:と同様に、アニメーションが無効になっている場合、デリゲートには単一のscrollViewDidScroll:メッセージが送信されます。アニメーションが有効になっている場合、アニメーションの進行に応じて、デリゲートに一連のscrollViewDidScroll:メッセージが送信されます。scrollRectToVisible:animatedの場合:スクロールビューのトラッキングおよびドラッグプロパティもNOです。

scrollRectToVisible:animated:でアニメーションが有効になっている場合、デリゲートはscrollViewDidEndScrollingAnimation:メッセージを受信し、スクロールビューが指定された場所に到着し、アニメーションが完了したことを通知します。

したがって、この機能を使用してUITextViewの可視性をロックできる可能性があります。

于 2011-05-19T18:30:04.627 に答える