Как найти, какой NSTextfield ориентирован - PullRequest
4 голосов
/ 24 июня 2011

У меня проблема с выяснением того, на каком NSTextfield фокусе.

Я строю многоязычную форму и у меня есть несколько NSTextfield s для ввода данных.Мне нужно изменить источник ввода текста для некоторых из NSTextfields во время ввода данных, и мне нужно, чтобы это происходило автоматически.

Сейчас я могу изменить источник ввода текста, как я уже упоминал здесь без проблем.

Проблема, с которой я столкнулся, заключается в том, чтобы изменить источник входного сигнала прямо тогда, когда NSTextfield становится сфокусированным.Если я использую метод делегата controlTextDidBeginEditing:, он изменяет исходные данные после ввода первой буквы.Это означает, что я теряю первое слово, которое я набрал на соответствующем языке.

Есть ли какой-нибудь делегат, чтобы найти его?

Ответы [ 2 ]

0 голосов
/ 09 февраля 2017

Вам нужно будет создать подкласс 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

0 голосов
/ 24 июня 2011

Вы можете создать подкласс своего NSTextField и переопределить - (BOOL)becomeFirstResponder (NSResponder), чтобы ответить на этот тип события.

Вы также можете попробовать control:textShouldBeginEditing:.

...