我有一个连接到平移手势识别器的 UITextView。当我将手指拖到文本视图上时,我使用 characterIndexForPoint 方法来确定我的手指在哪个字符上方,然后突出显示该点的文本。
在视图中的文本有换行符的某些情况下,即使我传入相同的参数,此方法似乎也会返回不同的结果。连续调用两次touched方法,一次charIndex为167,下一次为270。
我检查了文本视图的 AttributedString ,两种情况下的字体大小相同。
- (IBAction)touched:(UIPanGestureRecognizer *)sender {
if (self.txtView.isFirstResponder) {
return;
}
if (sender.state == UIGestureRecognizerStateChanged) {
CGPoint touchPoint = [sender locationInView:self.txtView];
NSUInteger charIndex = [self.txtView.layoutManager
characterIndexForPoint:touchPoint
inTextContainer:self.txtView.textContainer
fractionOfDistanceBetweenInsertionPoints:0];
...
这是一个已知的错误?难道我做错了什么?