使用下面的代码,我将plist中的文本放入textView。 textView还没有第一响应者;该文本最初仅供阅读。在iOS4中,goToEndOfNote代码将光标定位在文本的末尾并滚动到该位置。在3.1.3中,直到触摸屏幕才会滚动到结尾(除非需要更改或添加,否则不需要),使textView为firstresponder。我希望它在3.1.3中工作,就像在4.0中一样。请任何想法。感谢。
...
self.temp = [[[NSMutableArray alloc] initWithContentsOfFile:myPlistPath] autorelease];
self.textView.text = [self.temp objectAtIndex:0];
[self goToEndOfNote];
//[self performSelector:@selector(goToEndOfNote) withObject:nil afterDelay:0.1];
}
- (void) goToEndOfNote {
NSUInteger length = self.textView.text.length;
self.textView.selectedRange = NSMakeRange(length, 0);
}
答案 0 :(得分:3)
我使用setContentOffset:animated
滚动到我的某个应用中UITextView
的顶部。也应该工作滚动到底部。尝试:
- (void) goToEndOfNote {
NSUInteger length = self.textView.text.length;
self.textView.selectedRange = NSMakeRange(length, 0);
[textView setContentOffset:CGPointMake(0, length) animated:YES];
}
你也可以把它包起来,这只发生在3.1.3及以下:
- (void) goToEndOfNote {
NSUInteger length = self.textView.text.length;
self.textView.selectedRange = NSMakeRange(length, 0);
NSString* systemVersion = [[UIDevice currentDevice] systemVersion];
float version = [systemVersion floatValue];
if (version < 3.2) {
[textView setContentOffset:CGPointMake(0, length) animated:YES];
}
}
答案 1 :(得分:2)
不确定这是否是答案但是有效。
在3.1.3中,使用原始代码,光标位于末尾,但滚动位于顶部。在4.0中,两者都在底部。
NSUInteger length = self.textView.text.length;
self.textView.selectedRange = NSMakeRange(length, 0);
然后我注意到在3.1.3中,切换0和长度,滚动位于底部,但光标位于顶部。
NSUInteger length = self.textView.text.length;
self.textView.selectedRange = NSMakeRange(0, length);
把两者结合起来。它滚动到底部NSMakeRange(0,长度)大概到范围的末尾,然后NSMakeRange(长度,0)将光标放在那里,所有这些都没有改变它在4.0中的作用
NSUInteger length = self.textView.text.length;
self.textView.selectedRange = NSMakeRange(0, length);
self.textView.selectedRange = NSMakeRange(length, 0);
答案 2 :(得分:1)
您可以使用[UITextView -setSelectedRange:]
设置(location = TEXT_VIEW_STRING_LENGTH,length = 0)范围以将光标移至文本末尾,然后使用相同范围调用[UITextView -scrollRangeToVisible:]
以将光标滚动到可见。
答案 3 :(得分:1)
现在已经很晚了但我找到了解决方案。它需要一点点破解
- (void) textViewDidBeginEditing:(UITextView*)textview
{
[self performSelector:@selector(placeCursorAtEnd:) withObject:textview afterDelay:0.01];
}
- (void)placeCursorAtEnd:(UITextView *)textview
{
NSUInteger length = textview.text.length;
textview.selectedRange = NSMakeRange(length, 0);
[textView setContentOffset:CGPointMake(0, length) animated:YES];
}