Спасибо за других, указывающих путь. Я не смог заставить редактор поля по умолчанию окна использовать любые методы делегата. Наконец, я поместил в свой метод делегата -windowDidLoad следующее выражение
NSTextView* defaultFieldEditor = [self.window fieldEditor:YES forObject:nil];
// defaultEditor.delegate = self; didn't help
NSMenu *mu = defaultEditor.menu;
[mu insertItem:[NSMenuItem separatorItem] atIndex:0];
[mu insertItemWithTitle:@"Insert Line"
action:@selector(acnInsertLine:)
keyEquivalent:@"" atIndex:0];
[mu insertItemWithTitle:@"Delete Line"
action:@selector(acnDeleteLine:)
keyEquivalent:@"" atIndex:0];
Предполагается, что элементы будут помещаться в начале (в обратном порядке). Вы можете использовать addItem:
вместо этого. Оба страдают от проблемы, заключающейся в том, что содержимое меню меняется, и ваши пункты, вероятно, где-то посередине.
Обратите внимание, что редактор полей является NSTextView, даже если элемент управления, который он покрывает, является NSTextField. Это вызвало у меня некоторое недоумение.