如何确定活动文本字段

How to determine the active textfield

如何确定哪个文本字段处于活动状态? (重点放在哪一个)

我在 objective-C 中找到了这段代码,但不知道它是否仍然有效以及如何在 swift

中翻译它
NSResponder *firstResponder = [[NSApp keyWindow] firstResponder];
    if ([firstResponder isKindOfClass:[NSText class]] && [(id)firstResponder delegate] == mySearchField) {
    NSLog(@"Yup.");
}

嗯,如果有人感兴趣,我会在 iOS 中这样做。我不熟悉 Mac OS 如何处理 firstResponder,但它看起来很不一样。

    func findFirstResponder(in view: UIView) -> UIView? {
        for subview in view.subviews {
            if subview.isFirstResponder {
                return subview
            }
            if let firstReponder = findFirstResponder(in: subview) {
                return firstReponder
            }
        }
        return nil
    }

您可以执行 if else 并遍历每个 textField,这样您就可以知道哪个 textField 是 firstResponder。

func methodForDiscoverTheFirstResponder {
    if myTextField.isFirstResponder {
        //do stuff
    } else if mySecondTextField.isFirstResponder {
        //do stuff
    }
    ...
}

给你:

var responder = window.firstResponder
if responder.isKind(of: NSText.self) {
    let fieldEditor = responder as! NSText
    responder = fieldEditor.delegate as! NSResponder
}

最后是 responder 焦点控件。如果焦点控件是 NSTextField,那么第一响应者是字段编辑器,即文本字段内的 NSTextView。字段编辑器的委托就是控件。