簡體   English   中英

按下 Enter 時如何使 NSTextfield 失去焦點?

[英]How to make NSTextfield lose focus when Enter is pressed?

我想創建一個文本字段,如果我單擊它或按 Enter,它會在其中失去焦點。 由於在對焦環消失。 我見過這樣的情況,但我不知道在哪里放置代碼。 誰能告訴我如何讓 NSTextfield 失去焦點?

一種方法是實現 NSTextFieldDelegate,將委托分配給您的文本字段,並讓它調用一個選擇器(您代碼中的一個方法會改變第一響應者 = nil)。 當文本字段完成接收輸入時,將使用消息調用委托。 查看此處的 API 以獲取更多信息:

https://developer.apple.com/library/mac/documentation/cocoa/reference/NSTextFieldDelegate_Protocol/Reference/Reference.html#//apple_ref/occ/intf/NSTextFieldDelegate

對於像我這樣懶惰的人,這里有一些代碼。

這是我使用的縮減 NSTextfieldDelegate 方法:

func control(_ control: NSControl, textShouldEndEditing fieldEditor: NSText) -> Bool {
    DispatchQueue.main.async {
        self.textField2.window?.makeFirstResponder(nil)
    }
    return true
}

https://developer.apple.com/documentation/appkit/nstextview/1807135-resignfirstresponder?language=objc

resignFirstResponder Docu 說如下:

使用 NSWindow 方法 makeFirstResponder:,而不是這個方法,使文本視圖成為第一響應者。 切勿直接調用此方法。

// don't use this as the name may suggest (at least it did for me)
self.textField2.resignFirstResponder()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM