Я работаю над клавиатурным приложением.Обе руки на клавиатуре.Нет рук на мышь.
Пользователь может через клавиатуру открыть контекстное меню, выбрать элемент и, наконец, нажать Enter.
[NSMenu popUpContextMenu]
отображает меню без выделения какого-либо элемента.Пользователь должен будет нажать arrow_down один раз, чтобы выделить первый элемент.
Мой друг заметил, что вам нужно нажимать arrow_down каждый раз, когда вы используете это меню, и предложил удалить этот шаг, чтобыпервый пункт всегда подсвечивается при всплывающем меню.
Я подозреваю, что для этого требуется углеродный взлом?
Как программно выделить первый элемент?
Я использую этот код для всплывающего меню.
NSEvent* event = [NSEvent otherEventWithType:NSApplicationDefined
location:location
modifierFlags:0
timestamp:0
windowNumber:[[self window] windowNumber]
context:[[self window] graphicsContext]
subtype:100
data1:0
data2:0
];
[NSMenu popUpContextMenu:menu withEvent:event forView:self];
обновление: я пытался отправить моему приложению событие arrow_down сразу после popUpContextMenu, однако событие не выполняетсякогда меню видно.(Событие выполняется после ухода из меню).
unichar code = NSDownArrowFunctionKey;
NSString* chars = [NSString stringWithFormat: @"%C", code];
NSEvent* event = [NSEvent keyEventWithType:NSKeyDown location:location modifierFlags:0 timestamp:0 windowNumber:[[self window] windowNumber] context:[[self window] graphicsContext] characters:chars charactersIgnoringModifiers:chars isARepeat:NO keyCode:code];
[NSApp sendEvent:event];