gpt4 book ai didi

iphone - 以编程方式设置文本时阻止 UITextView 跳转

转载 作者:行者123 更新时间:2023-12-03 18:20:08 28 4
gpt4 key购买 nike

我必须更新滚动 UITextView 中的少量文本。我只会在光标当前所在的位置插入一个字符,并且只需按一下导航栏上的按钮即可执行此操作。

我的问题是,每当我调用 TextView 的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: 委托(delegate)方法,但它仍然没有向上滚动到原始位置。

- (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 3.0或更高版本,可以解决此问题:

textView.scrollEnabled = NO;

//You should know where the cursor will be(if you update your text by appending/inserting/deleting you can know the selected range) so keep it in a NSRange variable.

Then update text:
textView.text = yourText;

textView.scrollEnabled = YES;
textView.selectedRange = range;//you keep before

现在应该可以工作了(不再跳跃)

问候梅厄·阿萨亚格

关于iphone - 以编程方式设置文本时阻止 UITextView 跳转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/864069/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com