当在UITextView中写入的文本多于完全可以放在其中的文本时,文本将向上滚动,光标通常会在视图的底线上方放置一行或两行。这有点令人沮丧,因为我希望我的应用程序能够充分利用文本视图的整个高度。
基本上我想要的是配置UITextView以写入它的最低部分而不是仅用于滚动。
我见过一些类似的问题here,here和here。但是我还没有看到合适的解决方案。
由于
答案 0 :(得分:8)
我的实现略有不同(我想禁用滚动),但我也不得不停止光标跳出我的UITextView。为此,我在UITextView子类中实现了一个null scrollRectToVisible。像这样:
- (void)scrollRectToVisible:(CGRect)rect animated:(BOOL)animated
{
// do nothing. This fixes the cursor jumping above the field defect.
}
答案 1 :(得分:2)
优秀的解决方案是在子类UITextView中添加行
-(void) setContentOffset:(CGPoint)contentOffset {
[self setContentInset:UIEdgeInsetsZero];
[super setContentOffset:contentOffset];
}
这是工作!
答案 2 :(得分:1)
使用此
NSRange myRange=NSMakeRange(outPutTextView.text.length, 0);
[outPutTextView scrollRangeToVisible:myRange];
答案 3 :(得分:0)
如果我理解正确,你可以使用
[textView setScrollEnabled:NO];
禁用滚动。当光标到达下边距时不要键入...也许这不是一个好的解决方案,但你可以添加一些阈值([textView text]
中的最大字符数)并返回NO
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
如果是[[textView text] length] > maxCharacters
,则委托UITextView的方法。
答案 4 :(得分:0)
我发现似乎属性'contentOffset'也可以使用......
答案 5 :(得分:0)
我已经通过setframe得到了最后一行:
textView:shouldChangeTextInRange:replacementText:
中,使用scrollRangeToVisible:
,参数为selectedRange