私は何時間も検索してきましたが、これに対する答えはまだ見つかりません。NSSearchField
結果のメニューを表示する方法を教えてください。最近の検索メニューを使用して結果を表示できますが、メニューをプログラムで表示するにはどうすればよいですか? 助けてくれてありがとう。
質問する
2536 次
2 に答える
8
Apple はこれをいくつかのプライベートな方法で行っていると思います。NSWindow
の代わりに を使用している可能性がありNSMenu
ます。NSSearchField
これを行う1 つの方法はIBOutlet
、NSSearchField
.
- (void)controlTextDidEndEditing: (NSNotification *)aNotification
{
NSString *searchString = [searchField stringValue];
NSMenu *menu = [[NSMenu alloc] initWithTitle: @"results"];
[menu addItemWithTitle: searchString action: @selector(someAction:) keyEquivalent: @""];
[menu addItemWithTitle: @"someString" action: @selector(someOtherAction:) keyEquivalent: @""];
NSEvent *event = [NSEvent otherEventWithType: NSApplicationDefined
location: [searchField frame].origin
modifierFlags: 0
timestamp: 0
windowNumber: [[searchField window] windowNumber]
context: [[searchField window] graphicsContext]
subtype: NSApplicationDefined
data1: 0
data2: 0];
[NSMenu popUpContextMenu: [menu autorelease] withEvent: event forView: searchField];
}
メニューを表示すると、NSSearchField
. そのためcontrolTextDidEndEditing:
、 and notを使用しましたcontrolTextDidChange:
。イベントの詳細なカスタマイズについては、NSEvent のクラス リファレンスも確認してください。
于 2011-11-11T12:26:41.660 に答える