如何找到重点关注的 NSTextfield

发布于 2024-11-17 05:53:38 字数 454 浏览 3 评论 0原文

我在查找重点关注的 NSTextfield 时遇到问题。

我正在构建一个多语言表单,并有几个用于数据输入的 NSTextfield 。我必须在数据输入期间更改某些 NSTextfields 的文本输入源,并且我需要它自动发生。

现在,我可以按照我在此处提到的方式更改文本输入源,没有问题。

我遇到的问题是当 NSTextfield 获得焦点时立即更改输入源。如果我使用 controlTextDidBeginEditing: 委托方法,它会在键入第一个字母后更改源输入。 这意味着我丢失了用正确语言输入的第一个单词。

有没有代表去找找?

I'm having a problem finding out which NSTextfield is focused.

I am building a multi-language form and have several NSTextfields for data entry. I have to change the text input source for some of the NSTextfields during data entry, and I need it to happen automatically.

For now, I can change the text input source as I mentioned here without problem.

The problem that I have is to change the input source right when the NSTextfield becomes focused. If I use the controlTextDidBeginEditing: delegate method it changes the source input after typing the first letter.
This means that I lose the first word I typed in proper language.

Is there any delegate to find it ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

冰魂雪魄 2024-11-24 05:53:38

您可以子类化 NSTextField 并覆盖 - (BOOL)becomeFirstResponder (NSResponder) 来响应此类事件。

您也可以尝试使用 control:textShouldBeginEditing: 来代替。

You can subclass your NSTextField and override - (BOOL)becomeFirstResponder (NSResponder) to respond to this kind of event.

You can also try control:textShouldBeginEditing: instead.

被翻牌 2024-11-24 05:53:38

您需要

NSTextField Swift 3+

class FocusingTextField : NSTextField {

    var isFocused : Bool = false

    override func becomeFirstResponder() -> Bool {
        let orig = super.becomeFirstResponder()
        if(orig) { self.isFocused = true }
        return orig
    }

    override func textDidEndEditing(_ notification: Notification) {
        super.textDidEndEditing(notification)
        self.isFocused = false
    }

    override func selectText(_ sender: Any?) {
        super.selectText(sender)
        self.isFocused = true
    }

}

在视图控制器内对 self.view.window?.firstResponder 进行子类化,以提供 NSTextView< /代码>

You will need to subclass NSTextField

Swift 3+

class FocusingTextField : NSTextField {

    var isFocused : Bool = false

    override func becomeFirstResponder() -> Bool {
        let orig = super.becomeFirstResponder()
        if(orig) { self.isFocused = true }
        return orig
    }

    override func textDidEndEditing(_ notification: Notification) {
        super.textDidEndEditing(notification)
        self.isFocused = false
    }

    override func selectText(_ sender: Any?) {
        super.selectText(sender)
        self.isFocused = true
    }

}

self.view.window?.firstResponder inside your view controller would give a NSTextView

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文