Как закончить редактирование в NSTextFieldCell внутри NSOutlineView после нажатия клавиши ESC - PullRequest
9 голосов
/ 30 апреля 2011

Я пытаюсь получить пользовательский NSTextFieldCell (внутри NSOutlineView), чтобы завершить редактирование при нажатии клавиши ESC, но не могу найти способ сделать это. Я пытался добавить наблюдателя для уведомления NSControlTextDidChangeNotification, но он не запускается для клавиши ESC и не запускается keyDown в NSOutlineView.

Ответы [ 2 ]

20 голосов
/ 30 апреля 2011

Esc вызывает -cancelOperation в NSResponder. Вы можете попытаться справиться с этим где-нибудь в цепочке респондента.

0 голосов
/ 26 декабря 2018

Принятый ответ правильный.Чтобы уточнить: для перехвата ключевых событий ESC вы можете переопределить метод cancelOperation в NSViewController (или любой другой производной от используемого вами NSResponder).Вот как мой код выглядит в Swift 4.x.

class PopUIcontroller: NSViewController, NSTextFieldDelegate {

      override func cancelOperation(_ sender: Any?) {
        print("trying to cancel! Here I will do stuff to handle ESC key press!")

      }

}

Подробнее: NSWindowController не может захватывать ESC без добавления WebView в окно

...