NSTextFieldをサブクラス化し、テキスト変更の場合はtextDidChange
、失われたフォーカスの場合はtextDidEndEditing、キーアップの場合はkeyUpメソッドを上書きできます。このようにしてみてください。
import Cocoa
class CustomTextField: NSTextField {
override func viewWillMove(toSuperview newSuperview: NSView?) {
// customize your field here
frame = newSuperview?.frame.insetBy(dx: 50, dy: 50) ?? frame
}
override func textDidChange(_ notification: Notification) {
Swift.print("textDidChange")
}
override func textDidEndEditing(_ notification: Notification) {
Swift.print("textDidEndEditing")
}
override func keyUp(with event: NSEvent) {
Swift.print("keyUp")
}
}
ビューコントローラのサンプル使用法:
import Cocoa
class ViewController: NSViewController {
override func viewDidLoad() {
super.viewDidLoad()
let textField = CustomTextField()
view.addSubview(textField)
}
}
Sample
[NSControlDelegateMethods](https://developer.apple.com/reference/appkit/nscontrol# // apple_ref/occ/instm/NSObject/controlTextDidChange :) – NSNoob