gpt4 book ai didi

ipad - 按删除键后 UITextView caretRectForPosition 最后一个字符的值错误

转载 作者:行者123 更新时间:2023-12-01 23:11:50 26 4
gpt4 key购买 nike

我有一种在 WebView 中更改文本的方法,以检测当前插入符位置的可见矩形。

UITextPosition *endPos = self.selectedTextRange.end;   
CGRect rect = [self caretRectForPosition:endPos];
[self scrollRectToVisible:rect animated:NO];

它工作得很好,除非我在文档末尾按下键盘上的删除键。在本例中,它滚动到文档的开头,这是意外的。

最佳答案

我也遇到过类似的问题...这似乎是 TextView 中的计时问题。我的解决方案是:

A:检测caretRectForPosition的无效结果。就我而言,无效坐标似乎总是要么是大负值(-1.0 似乎是 i.O.!),要么是 origin.y 的“无限”。

B:短时间后重新向 TextView 询问插入符位置。我检查了一些延迟值; 0.05 似乎已经足够了。

代码:

- (void)textViewDidChange:(UITextView *)pTextView {

UITextPosition* endPos = pTextView.selectedTextRange.end;

CGRect caretRectInTextView = [pTextView caretRectForPosition:endPos];

if ((-1.0 > CGRectGetMinY(caretRectInTextView)) ||
(INFINITY == CGRectGetMinY(caretRectInTextView))) {
NSLog(@"Invalid caretRectInTextView detected!");

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.05 * NSEC_PER_SEC)),
dispatch_get_main_queue(),
^{
// Recall
[self textViewDidChange:pTextView];
});
return;


}

... your code ...
}

关于ipad - 按删除键后 UITextView caretRectForPosition 最后一个字符的值错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26977675/

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