UITextViewは最後の行に自動スクロールします
-
05-07-2019 - |
解決
実装が少し異なります(スクロールを無効にしたい)が、カーソルがUITextViewから飛び出すのを止める必要もありました。これを行うために、UITextViewサブクラスにnull scrollRectToVisibleを実装しました。このように:
- (void)scrollRectToVisible:(CGRect)rect animated:(BOOL)animated
{
// do nothing. This fixes the cursor jumping above the field defect.
}
他のヒント
優れたソリューションは、サブクラスUITextViewに行を追加する
-(void) setContentOffset:(CGPoint)contentOffset {
[self setContentInset:UIEdgeInsetsZero];
[super setContentOffset:contentOffset];
}
動作しました!
これを使用
NSRange myRange=NSMakeRange(outPutTextView.text.length, 0);
[outPutTextView scrollRangeToVisible:myRange];
正しいことを理解していれば、使用できます
[textView setScrollEnabled:NO];
スクロールを無効にします。カーソルが下のマージンに達したときに入力しないのはどうですか...多分それは良い解決策ではありませんが、いくつかのしきい値( [textView text]
の最大文字数)を追加して
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
[[textView text] length]>の場合、 UITextViewのデリゲートメソッドmaxCharacters
。 プロパティ 'contentOffset'も使用できるようです...
setframeで最後の行を取得しました:
- 行の高さを setframe できます
- 編集中に-(BOOL)
textView:shouldChangeTextInRange:replacementText:
でscrollRangeToVisible:
を使用すると、引数はselectedRange
- 編集を終了したら、元のサイズに setframe
所属していません StackOverflow