当在 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]
)并返回 NO
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
UITextView 的委托方法 if [[textView text] length] > maxCharacters
.
我发现似乎属性'contentOffset'也可以使用......
我有最后一行 setframe :
textView:shouldChangeTextInRange:replacementText:
中使用scrollRangeToVisible:
,参数为selectedRange