【问题标题】:NSTextField wrong cursor until focusedNSTextField 错误光标直到聚焦
【发布时间】:2015-10-14 09:49:35
【问题描述】:

我可以使用NSAttributedStringNSTextField 元素上设置可点击链接。视图一出现,文本就会正确显示(蓝色,下划线)。

但是,悬停时显示的光标是编辑(I-Beam)光标,直到第一次单击(任意位置)NSTextField。单击后,将鼠标悬停在文本的“超链接”部分上时,手点光标将按预期显示。

我能够继承 NSTextField 并覆盖 resetCursorRects,但是,这允许我更改整个 NSTextField 绑定的光标,我希望它仅在悬停在文本的超链接部分上时显示(或使用 cursorRects ,但这似乎是一种矫枉过正,迭代(已经迭代创建)整个文本)。

我也尝试设置属性字符串的NSCursor 属性,但这并没有解决问题。

【问题讨论】:

  • 看起来 NSTextView 确实显示了正确的光标而 NSTextField 没有。

标签: objective-c macos cocoa


【解决方案1】:

我相信NSTextField 不直接支持这一点。当您单击文本字段时,它开始工作,因为此时创建了文本字段的字段编辑器;字段编辑器是NSTextView,它可以满足您的要求。所以你基本上有两个选择。您可以(1)做简单的事情并使用NSTextView而不是NSTextField(有什么特别的原因不能这样做吗?),或者(2)您可以在resetCursorRects中设置正确的光标通过循环遍历设置了链接属性的字符范围的矩形,但这意味着设置一个布局管理器等等——如果你使用NSTextView,这一切都会为你完成。第三种可能性是在用户单击之前立即启动文本字段的字段编辑器——换句话说,使文本字段成为第一响应者。但这仅适用于您的窗口中只有一个这样的文本字段,并且窗口中没有其他内容想要成为第一响应者的情况,因此这可能不是一个非常令人满意的解决方案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-05
    相关资源
    最近更新 更多