【发布时间】:2010-10-26 05:32:40
【问题描述】:
我必须更新滚动 UITextView 中的少量文本。我只会在光标当前所在的位置插入一个字符,并且只需按一下导航栏上的按钮即可。
我的问题是,每当我调用文本视图的 setText 方法时,它都会跳到文本的底部。我试过使用 contentOffset 并重置 selectedRange 但它不起作用!这是我的例子:
// Remember offset and selection
CGPoint contentOffset = [entryTextView contentOffset];
NSRange selectedRange = [entryTextView selectedRange];
// Update text
entryTextView.text = entryTextView.text;
// Try and reset offset and selection
[entryTextView setContentOffset:contentOffset animated:NO];
[entryTextView setSelectedRange: selectedRange];
有没有什么方法可以在不进行任何滚动移动的情况下更新文本...就好像他们只是在键盘上输入了什么一样?
编辑:
我已经尝试使用 textViewDidChange: 委托方法,但它仍然没有向上滚动到原始位置。
- (void)textViewDidChange:(UITextView *)textView {
if (self.programChanged) {
[textView setSelectedRange:self.selectedRange];
[textView setContentOffset:self.contentOffset animated:NO];
self.programChanged = NO;
}
}
- (void)changeButtonPressed:(id)sender {
// Remember position
self.programChanged = YES;
self.contentOffset = [entryTextView contentOffset];
self.selectedRange = [entryTextView selectedRange];
// Update text
entryTextView.text = entryTextView.text;
}
【问题讨论】:
标签: iphone cocoa-touch uitextview