如何确定活动文本字段

时间:2016-10-28 22:58:00

标签: swift xcode macos cocoa nstextfield

如何确定哪个文本字段处于活动状态? (哪一个关注它)。

我在Objective-C中发现了这段代码,但不知道它是如何工作以及如何在swift中翻译它

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

3 个答案:

答案 0 :(得分:2)

你走了:

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

最后是responder集中控制。如果焦点控件是NSTextField,则第一个响应者是字段编辑器,文本字段内有NSTextView。字段编辑器的代表是控件。

答案 1 :(得分:0)

嗯,如果有人有兴趣,我会在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
    }

答案 2 :(得分:-1)

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

window.open('', document.getElementById('canvas').toDataURL());