【问题标题】:NSTextField and FirstResponderNSTextField 和 FirstResponder
【发布时间】:2013-07-09 20:05:39
【问题描述】:

我正在开发一个可可应用程序,它有一个主窗口和几个面板窗口。

当用户通过单击主窗口等离开文本字段时,我需要在NSTextField(在面板窗口上)上自动保存一些文本。到目前为止,我已经尝试通过在NSTextField 子类上实现 resignFirstResponder,但是,如果我单击同一窗口上的另一个文本字段“resignFirstResponder”会被触发,但如果我只是单击主窗口上的某个空白处,它不会被触发。 (虽然NSTextField 失去了蓝色焦点)

我需要捕捉NSTextField失去焦点环的这个事件来保存未提交的更改。任何指针将不胜感激。

此文本字段位于NSTableCellView

【问题讨论】:

    标签: objective-c macos cocoa


    【解决方案1】:

    使用[[NSApp mainWindow] resignFirstResponder];

    【讨论】:

    • 这是正确且难以找到的答案。这很奇怪,但就是这样。您可以在焦点更改时或在各种其他委托方法中调用它。
    • 嗯,我怎么知道焦点改变了?因为当我点击我的主窗口时,编辑端的发送操作不会触发....那么我应该在哪里调用它?
    • 这对我有用。你也可以这样做: self.window?.makeFirstResponder(nil) 如果你在 NSView 中并使用 swift 就是这样。
    【解决方案2】:

    如何使用 NStextfield 的操作在结束编辑时发送

    然后只需右键单击并拖动到 Xib 文件中的对象(或 FirstResponder)并将其连接到方法。它现在应该在您结束编辑(取消选择、Enter 或 Tab)时运行此方法。

    【讨论】:

    • 感谢您的回复,但它在与辞职第一响应者相同的情况下发生火灾。当我点击主窗口上的某个位置时,它不会被触发。那时,文本字段失去了蓝色焦点环,但保留了白色编辑背景。 :(
    猜你喜欢
    • 2018-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-17
    • 1970-01-01
    相关资源
    最近更新 更多