LoginSignup
6
6

More than 5 years have passed since last update.

NSTextFieldを選択中に矢印キー(▲▼)押して数値変更したい。

Last updated at Posted at 2016-06-11

ツールとか使っていると、数値入力時に矢印キー押したら数値がインクリメント/デクリメントしたりできて便利だったりします。

それを実装しようとしてInterfaceBuilderの設定とにらめっこしてたんですが、特にそんな項目はなくコードで書いたら以外と楽にできました。

流れ

矢印キー押下時に、NSControlTextEditingDelegateの control(control: NSControl, textView: NSTextView, doCommandBySelector commandSelector: Selector) -> Boolが呼び出されるので、このメソッドの中でキーバインドの値を判断して処理を行います。

今回は以下のキーバインドを見て数値をインクリメント/デクリメントします。

  • ▲キー → NSResponder.moveUp(_:)
  • ▼キー → NSResponder.moveDown(_:)

サンプルコード

SampleViewController.swift
    func control(control: NSControl, textView: NSTextView, doCommandBySelector commandSelector: Selector) -> Bool {

        if let textField = control as? NSTextField {
            if let currentNum = Int(textField.stringValue) {
                if commandSelector == #selector(NSResponder.moveUp(_:)) {
                    textField.stringValue = "\(currentNum + 1)"
                    // 戻り値がtrueの場合、何もしない
                    return true
                } else if commandSelector == #selector(NSResponder.moveDown(_:)) {
                    textField.stringValue = "\(currentNum - 1)"
                    // 戻り値がtrueの場合、何もしない
                    return true
                }
            }
        }
        // 戻り値がfalseの場合、commandSelectorが呼び出される
        return false
    }

参考

6
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
6