2012-08-07 53 views
2

我在UIScrollView上放置了一些CTFrame文本列,并且我做出了一个选择工具来选择和突出显示文本,如下图所示。Core Text上的可点击区域CTFrame

我希望能够点击选择,所以矩形是50%不透明度的UIButton,通过CTFrame。

问题如下:出于某种原因,按钮TouchUpInside事件没有被触发,我认为如果突出显示放置在CTFrame的低音部分,它会有更好的效果,但我认为按钮不会收到事件。

任何想法来解决这个问题,即有一个选择标记下面的文本和可点击?


这里的文本高亮显示例子:

Text selection over CTFrame

回答

2

你怎么把你放在CTFrames到的UIScrollView? CTFrame不是UIView子类。你在哪里画? 还检查你的UIScroll view'a内容大小。

使用UIButtons不是一个好主意,最好是直接用Core Graphics绘制它。 触摸应该处理UIView本身,然后翻译成适当的文本。 使用CTFrameGetLineOrigins()找到正确的行(通过检查Y起点),然后使用CTLineGetStringIndexForPosition()在行内找到正确的字符(从点减去行起点后)。

+0

你是对的,我把CTFrames放在UIView上,然后放在UIScrollView上的UIView。内容大小是正确的。我正确地从第一个文本列滚动到最后一个文本列没有问题。 – javsmo 2012-08-07 14:05:58

+0

我喜欢你的解决方案来绘制突出显示的矩形,因为我正在使用按钮,并使用我绘制突出显示时保存的矩形测试触摸位置。我会尝试这个想法。 – javsmo 2012-08-07 14:09:08

0

我觉得你可以使用轻敲手势识别器,当点击时,只是检查点击点是否在你突出显示的部分的矩形中。我认为轻拍手势识别器与UIScrollView一起工作(不像其他手势)。