Swift 取消选择NSTEXT字段中的文本

Swift 取消选择NSTEXT字段中的文本,swift,macos,cocoa,nstextfield,Swift,Macos,Cocoa,Nstextfield,是否有一种简单的方法可以在按enter键后取消选择NSTextField?首先,您需要将视图控制器设置为文本字段的代理。然后重写NSControl实例方法controltextdidediting(:),获取文本字段当前编辑器的选定范围 然后从主线程将其设置回文本字段: import Cocoa class ViewController: NSViewController, NSTextFieldDelegate { @IBOutlet weak var textField: NSTe

是否有一种简单的方法可以在按enter键后取消选择
NSTextField

首先,您需要将视图控制器设置为文本字段的代理。然后重写
NSControl
实例方法
controltextdidediting(:)
,获取文本字段当前编辑器的选定范围 然后从主线程将其设置回文本字段:

import Cocoa

class ViewController: NSViewController, NSTextFieldDelegate {
    @IBOutlet weak var textField: NSTextField!
    override func viewDidLoad() {
        super.viewDidLoad()
        textField.delegate = self
    }
    override func controlTextDidEndEditing(_ obj: Notification) {
        if let selectedRange = textField.currentEditor()?.selectedRange {
            DispatchQueue.main.async {
                self.textField.currentEditor()?.selectedRange = selectedRange
            }
        }
    }
}

这是我做这件事的一种方法

通过使用
isSelectable
isEditable
禁用它,然后设置计时器在0.5s后重新启用它

@IBAction func timeCodeChanged(_: NSTextField) {
    timecodeLabel.isSelectable = false
    timecodeLabel.isEditable = false
    Timer.scheduledTimer(timeInterval: 0.5, target: self, selector: #selector(reEnableLabel), userInfo: nil, repeats: false)
}

@objc func reEnableLabel() {
    timecodeLabel.isSelectable = true
    timecodeLabel.isEditable = true
}

它确实会取消选择文本文件,但我要找的是它,取消选择文本并将文本选择器保留在任何位置。基本上,我正在寻找一种方法,防止文本文件在按enter键时自动选择所有文本Works,但这只是在取消选择文本后重新选择文本我正在寻找一种方法来防止文本字段一起自动选择,我不知道为什么它是由defaut造成的,这种行为没有打动你,但我的声誉不高,我现在已经改进了