当在UITextView中写入的文本多于完全可以放在其中的文本时,文本将向上滚动,光标通常会在视图的底线上方放置一行或两行。这有点令人沮丧,因为我希望我的应用程序能够充分利用文本视图的整个高度。

基本上我想要的是配置UITextView以写入它的最低部分而不是仅用于滚动。

我见过一些类似的问题此处此处此处。但是我还没有看到合适的解决方案。

由于

有帮助吗?

解决方案

我的实现略有不同(我想禁用滚动),但我也不得不停止光标跳出我的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的最后一行:

  1. 您可以将 setframe 设置为大约行高
  2. 在编辑时,在 - (BOOL) textView:shouldChangeTextInRange:replacementText:中,使用 scrollRangeToVisible:,参数为 selectedRange
  3. 结束编辑时, setframe 为原始尺寸
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top