UITextposition *endPos = self.selectedTextRange.end; CGRect rect = [self caretRectForposition:endPos];[self scrollRectToVisible:rect animated:NO];
除非我在文档末尾并按下键盘上的删除键,否则它的效果很好.在这种情况下,它会滚动到文档的开头,这是意外的.
解决方法 我有一个类似的问题……它似乎是文本视图中的计时问题.我的解决方案是:
答:检测来自caretRectForposition的无效结果.在我的例子中,无效坐标似乎总是大的负值(-1.0似乎是i.O.!)或者是origin.y的’无限’.
B:在短时间后重新询问插入位置的文本视图.我检查了一些延迟值; 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错误值为最后一个字符全部内容,希望文章能够帮你解决ipad – 按删除键后UITextView caretRectForPosition错误值为最后一个字符所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)