我有一个textView,它有一个UITapGesture,它将此方法作为选择器hello
foo
bar
qux
。当我在textview的最后一行下面或者在显示它的最后一个字符之后点击一下它将调用我最后一个字符的属性文本上的方法,因为看起来:- (void)textTapped:(UITapGestureRecognizer *)recognizer
返回最后一个字符。在这种情况下,我不希望它使用最后一个字符,因为我不想进入我的条件语句。我尝试更新逻辑,因此它会layoutManager characterIndexForPoint:location
inTextContainer:textView.textContainer
fractionOfDistanceBetweenInsertionPoints:NULL];
并处理这种情况很好,但是如果我点击最后一个字符,那么它就不会调用该函数。有没有办法防止最后一个字符被点击时没有被点击,只是获取精确的字符作为点击或其他方式来防止调用该方法。
characterIndex < textView.textStorage.length - 1
答案 0 :(得分:1)
我认为您不需要使用characterIndexForPoint
,而是需要使用glyphIndexForPoint
文档,您可以在此处找到它们。 Apple Documentation
现在在文档中,它清楚地告诉您在找到字形后要遵循的步骤,并且我将从文档中的段落引用:
如果没有字形在点之下,则返回最近的字形,其中 最近的是根据选择的要求定义的 老鼠。客户谁希望确定这一点是否真实 在返回的字形范围内,应该遵循这个 致电
boundingRectForGlyphRange:inTextContainer:
并测试是否 该点落在该方法返回的矩形中。如果 partialFraction是非NULL,它通过引用返回的分数 返回的字形位置与之间的距离 下一个字形的位置。