0
私はNSTextField
にキー通知を持っています。キーが押されると、キャレットの位置が0の位置にあるかどうかをチェックしたい:何かをし、そうでなければデフォルトのアクションを行う。NSTextFieldはカートの位置を得る
class ConsoleTextField: NSTextField {
var commandHistory:[String] = []
var commandPosition:Int = 0
var keyDownMonitor:Any? = nil
override func becomeFirstResponder() -> Bool {
if keyDownMonitor == nil {
keyDownMonitor = NSEvent.addLocalMonitorForEvents(matching: .keyDown) {
self.keyDown(with: $0)
return $0
}
}
return super.becomeFirstResponder()
}
override func textDidEndEditing(_ notification: Notification) {
super.textDidEndEditing(notification)
if let keyDownMonitor = keyDownMonitor {
NSEvent.removeMonitor(keyDownMonitor)
}
keyDownMonitor = nil
}
override func keyDown(with event: NSEvent) {
switch event.keyCode {
case 125: // down arrow key
// here I want to check current caret position in text field
default:
break
}
}
}
私はこのように、関連の質問を参照してください。
How to find caret position in an NSTextView?
しかし、私は彼らがスウィフト