我在找出NSTextfield
关注的问题时遇到了问题。
我正在构建一个多语言表单,并且有几个NSTextfield
用于数据输入。我必须在数据输入期间更改某些NSTextfields
的文本输入源,我需要它自动发生。
现在,我可以像我提到here一样毫无问题地更改文本输入源。
我遇到的问题是在NSTextfield
成为焦点后立即更改输入源。如果我使用controlTextDidBeginEditing:
委托方法,则在键入第一个字母后更改源输入。
这意味着我丢失了用正确语言输入的第一个单词。
是否有代表才能找到它?
答案 0 :(得分:0)
您可以继承NSTextField并覆盖- (BOOL)becomeFirstResponder
(NSResponder
)以响应此类事件。
您也可以尝试使用control:textShouldBeginEditing:
。
答案 1 :(得分:0)
您需要继承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