Я пытаюсь заставить пользовательский NSTextFieldCell
(внутри NSOutlineView
) заканчивать редактирование при нажатии клавиши ESC, но не могу найти способ сделать это. Я попытался добавить наблюдателя для NSControlTextDidChangeNotification
-уведомления, но он не срабатывает для клавиши ESC и keyDown
не срабатывает в NSOutlineView
.
Как завершить редактирование в NSTextFieldCell внутри NSOutlineView после нажатия клавиши ESC
Ответы (2)
Esc запускает -cancelOperation
в NSResponder. Вы можете попытаться справиться с этим где-то в вашей цепочке респондентов.
person
Frederik Slijkerman
schedule
30.04.2011
Спасибо. Я работал с - (void)cancelOperation:(id)sender { [self abortEditing]; [[свое окно] makeFirstResponder:self]; }
- person finnsson; 30.04.2011
Спасибо за это. Мне было интересно, как сделать такие вещи на некоторое время.
- 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