2017-08-28 3 views
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?

しかし、私は彼らがスウィフト

答えて

1

図それを上で動作することはできません。

self.currentEditor()?.selectedRange.location 
関連する問題