3

UITextView に完全に収まるよりも多くのテキストを書き込むと、テキストが上にスクロールし、カーソルがビューの一番下の行の 1 ~ 2 行上に配置されることがよくあります。アプリケーションでテキスト ビューの高さ全体を有効に活用したいので、これは少しイライラします。

基本的に私が望むのは、 UITextView をスクロールするためだけに使用するのではなく、最下部まで書き込むように構成することです。

ここここここで同様の質問をいくつか見ました。ただし、適切な解決策はまだ見ていません。

ありがとう

4

6 に答える 6

8

私は少し異なる実装をしています (スクロールを無効にしたい) が、カーソルが UITextView から飛び出すのを止める必要もありました。これを行うために、UITextView サブクラスに null scrollRectToVisible を実装しました。このような:

- (void)scrollRectToVisible:(CGRect)rect animated:(BOOL)animated
{
// do nothing. This fixes the cursor jumping above the field defect.
}
于 2009-12-17T14:26:51.943 に答える
2

優れたソリューションは、サブクラスUITextViewに行を追加することです

-(void) setContentOffset:(CGPoint)contentOffset {
    [self setContentInset:UIEdgeInsetsZero];
    [super setContentOffset:contentOffset];
}

仕事です!

于 2011-01-22T22:24:05.173 に答える
1

これを使って

NSRange myRange=NSMakeRange(outPutTextView.text.length, 0);

[outPutTextView scrollRangeToVisible:myRange];
于 2013-03-18T07:46:57.637 に答える
0

私が正しく理解していれば、あなたは使うことができます

[textView setScrollEnabled:NO];

スクロールを無効にします。カーソルが下マージンに達したときに入力しないのはどうですか...おそらくそれは良い解決策ではありませんが、いくつかのしきい値(の最大文字数[textView text])を追加してNOを返すことができます

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text

の場合、UITextViewのデリゲートメソッド[[textView text] length] > maxCharacters

于 2009-11-27T17:27:37.937 に答える
0

プロパティ'contentOffset'も使用できるようです...

于 2010-03-16T05:11:44.270 に答える
0

setframe で最後の行を取得しました:

  1. フレームを約行の高さに設定できます
  2. 編集時は - (BOOL)textView:shouldChangeTextInRange:replacementText:scrollRangeToVisible:、引数はselectedRange
  3. 編集を終了したら、フレームを元のサイズに設定します
于 2013-06-04T02:05:48.640 に答える