Epa*_*aga 4 cocoa-touch objective-c uigesturerecognizer textkit
我有一个连接到平移手势识别器的 UITextView。当我将手指拖到文本视图上时,我使用 characterIndexForPoint 方法来确定我的手指在哪个字符上,然后在该点突出显示文本。
在视图中的文本有换行符的某些情况下,即使我传入相同的参数,此方法似乎返回不同的结果。touch 方法被连续调用两次,一次 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];
...
Run Code Online (Sandbox Code Playgroud)
这是一个已知的错误?难道我做错了什么?
你做错的一件事是fractionOfDistanceBetweenInsertionPoints:
不应该为零。它是一个结果参数,所以它应该是 a 的地址,CGFloat
或者NULL
如果你不在乎。
CGPoint touchPoint = [sender locationInView:self.txtView];
CGFloat fraction = 0;
NSUInteger charIndex = [self.txtView.layoutManager
characterIndexForPoint:touchPoint
inTextContainer:self.txtView.textContainer
fractionOfDistanceBetweenInsertionPoints:&fraction];
Run Code Online (Sandbox Code Playgroud)
您可能对fractionOfDistanceBetweenInsertionPoints:
后者不感兴趣,但它可能可以帮助您诊断此问题。你传递的观点可能不明确,它会帮助你看到这一点。
归档时间: |
|
查看次数: |
1498 次 |
最近记录: |