私は非常にキーボードを多用するアプリケーションに取り組んでいます。キーボードの両手。マウスに手を入れないでください。
ユーザーは、キーボードを介してコンテキストメニューをポップアップし、項目を選択して、最後にEnterキーを押すことができます。
[NSMenu popUpContextMenu]
アイテムを強調表示せずにメニューを表示します。ユーザーは、最初の項目を強調表示するために、arrow_downを1回押す必要があります。
私の友人は、このメニューを使用するたびに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];
更新:popUpContextMenuの直後にアプリにarrow_downイベントを送信しようとしましたが、メニューが表示されているときにイベントが実行されません。(イベントはメニューがなくなった後に実行されます)。
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];