如何确定活动文本字段
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
。字段编辑器的委托就是控件。
如何确定哪个文本字段处于活动状态? (重点放在哪一个)
我在 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
。字段编辑器的委托就是控件。