Как завершить редактирование в NSTextFieldCell внутри NSOutlineView после нажатия клавиши ESC

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


person finnsson    schedule 30.04.2011    source источник


Ответы (2)


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

person Frederik Slijkerman    schedule 30.04.2011
comment
Спасибо. Я работал с - (void)cancelOperation:(id)sender { [self abortEditing]; [[свое окно] makeFirstResponder:self]; } - person finnsson; 30.04.2011
comment
Спасибо за это. Мне было интересно, как сделать такие вещи на некоторое время. - person Paul Shapiro; 27.11.2014

Принятый ответ правильный. Чтобы уточнить: для перехвата событий клавиши 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 может " t захват ESC без WebView добавляется в окно

person sdailey    schedule 26.12.2018