相关疑难解决方法(0)

以编程方式设置文本时停止跳转UITextView

我必须在滚动的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];
Run Code Online (Sandbox Code Playgroud)

有没有办法可以在没有任何滚动动作的情况下更新文本...好像他们只是在键盘上输入了一些东西?

编辑:

我已经尝试使用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;
}
Run Code Online (Sandbox Code Playgroud)

iphone cocoa-touch uitextview

19
推荐指数
4
解决办法
1万
查看次数

标签 统计

cocoa-touch ×1

iphone ×1

uitextview ×1