我可以使用NSTextField
在NSAttributedString
元素上设置可点击链接。一旦视图出现,文本就会正确显示(蓝色,带下划线)。
但是,光标显示在悬停时是编辑(I-Beam)光标,直到NSTextField上的第一次单击(任何位置)。单击后,当鼠标悬停在文本的“超链接”部分上时,手点光标将按预期显示。
我能够继承NSTextField
并覆盖resetCursorRects,但是,这允许我更改整个NSTextField边界的光标,我希望它只在将鼠标悬停在文本的超链接部分时显示(或者使用cursorRects,但这似乎是一种过度杀伤,迭代(已经迭代创建)整个文本。)
我也尝试设置属性字符串的NSCursor
属性,但这并没有解决问题。
答案 0 :(得分:3)
我认为NSTextField
不直接支持这一点。单击文本字段时它开始工作,因为此时创建了文本字段的字段编辑器;字段编辑器是NSTextView
,它可以完成您希望它执行的操作。所以你基本上有两个选择。您可以(1)轻松完成并使用NSTextView
代替NSTextField
(有什么特别的原因可以解决?),或者(2)您可以设置正确的游标通过循环遍历具有链接属性集的字符范围的rects,在resetCursorRects
中自我调整,但这意味着设置布局管理器等等 - 如果您使用{{1},那么这一切都是为您完成的}。第三种可能性是在用户点击之前立即启动文本字段的字段编辑器 - 换句话说,使文本字段成为第一个响应者。但是只有在你的窗口中只有一个这样的文本字段时才有效,如果窗口中没有其他任何东西想成为第一个响应者,那么这可能不是一个非常令人满意的修复。