【问题标题】:Why does controlTextDidChange(_ obj: Notification) not work for label ? [macOS]为什么 controlTextDidChange(_ obj: Notification) 不适用于 label ? [苹果系统]
【发布时间】:2019-06-19 14:24:45
【问题描述】:

为什么 controlTextDidChange(_ obj: Notification) 不适用于标签?我希望在标签的 stringValue 更改时调用一个函数 [macOS]

【问题讨论】:

  • 这是MacOS,根据定义无法编辑或选择标签,请在评论前参考文档
  • 没有兄弟请更新,在swift 5中,他们为标签NSTextField(labelWithString:“”)创建了一个单独的构造函数。当然是的,它只是一个文本字段,但是一个文本字段被称为仅在无法编辑或选择时的标签
  • 不,我已经明确提到了文本字段标签,当我明确提到我正在创建文本字段标签时,您为什么会感到困惑。请在指出错误之前更新自己

标签: swift macos cocoa label nstextfield


【解决方案1】:

controlTextDidChange(以及controlTextDidBeginEditingcontrolTextDidEndEditing)是报告用户 对可编辑文本字段发起的更改的委托方法。标签不可编辑,因此永远不会发送这些消息。

如果您想要关于程序化标签更改的通知,我建议您使用绑定。 (我很确定更改标签值会触发值更改通知。我从来没有这样使用过,所以你必须验证一下。)

将控件的文本值简单地绑定到对象的字符串属性可能会更容易(我经常这样做)。然后,您将通过更改该属性来设置标签。需要通知此更改的其他代码可以观察该属性,或将更新逻辑包装在 didSet 属性观察器中。

【讨论】:

    猜你喜欢
    • 2021-11-14
    • 2023-04-10
    • 2021-02-01
    • 2022-11-24
    • 1970-01-01
    • 2017-05-23
    • 1970-01-01
    • 2021-01-10
    • 1970-01-01
    相关资源
    最近更新 更多