팬 제스처 인식기에 연결되는 UITextView가 있습니다. 손가락을 텍스트보기 위로 드래그하면 characterIndexForPoint 메서드를 사용하여 손가락이 어느 쪽인지 확인하고 손가락이 & 이상이면 그 지점의 텍스트를 강조 표시합니다.동일한 매개 변수에 대해 다른 결과를 반환하는 characterIndexForPoint
보기의 텍스트에 줄 바꿈이있는 경우이 메서드는 동일한 매개 변수를 전달하더라도 다른 결과를 반환하는 것처럼 보입니다. 터치 된 메서드는 한 번에 두 번 호출되며 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];
...
알려진 버그입니까? 내가 뭔가 잘못하고 있는거야?
'터치 된 메소드는 연속으로 두 번 호출되며, charIndex가 167이면 그 값은 270이됩니다 .' - 두 호출에서 모두 같은 'touchPoint'가 사용됩니까? –
예 (이것이 "동일한 매개 변수를 전달하는"이유입니다) – Epaga