objective-c - Core Text CTFrame 上的可点击区域

标签 objective-c ios cocoa-touch core-text

我在 UIScrollView 上放置了一些 CTFrame 文本列,并且我制作了一个选择工具,以便能够选择并突出显示文本,如下图所示。

我希望能够单击所选内容,因此矩形是 CTFrame 上不透明度为 50% 的 UIButton。

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

有什么想法可以解决这个问题,即在文本下方有一个选择标记并且可以点击吗?


这是文本突出显示示例:

Text selection over CTFrame

最佳答案

你是如何将 CTFrame 放置到 UIScrollView 上的? CTFrame 不是 UIView 子类。你在哪里画它? 另请检查您的 UIScroll View 的内容大小。

使用UIButtons并不是一个好主意,最好直接用Core Graphics来绘制。 触摸应该由 UIView 本身处理,然后转换为适当的文本。 使用 CTFrameGetLineOrigins() 查找正确的行(通过检查 Y 原点),然后使用 CTLineGetStringIndexForPosition() 查找该行内的正确字符(减去该行后)点为原点)。

关于objective-c - Core Text CTFrame 上的可点击区域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11847127/

相关文章:

ios - 如果用户向上滚动控制中心,如何从 iOS 键盘扩展检测到?

ios - 更改 NavigationItem 提示时出现奇怪的动画

cocoa-touch - 标题未显示为 UIButton

objective-c - 读取 iPhone 的环境光传感器

objective-c - 白色到 RGB 不正确

IOS什么是顶部图像和其余表格 View 的 View

ios - 如何在 TableView 中的单元格中创建部分?

ios - Xcode Save for Development 部署选项缺失

ios - 如何从 subview Controller 中更改后退按钮文本?

ios - 在 UIPickerView 中显示来自多个组件的文本