3

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

基本上我想要的是配置 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 的委托方法 if [[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 回答