首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSSearchField结果菜单

NSSearchField结果菜单
EN

Stack Overflow用户
提问于 2011-11-11 11:43:51
回答 2查看 2.5K关注 0票数 8

我已经找了好几个小时了,还是没有找到答案。如何让NSSearchField显示带有结果的菜单。我可以使用“最近搜索”菜单来显示结果,但如何以编程方式显示该菜单?谢谢你的帮助。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-11-11 20:26:42

我相信苹果是通过一些私密的方法做到这一点的。也许它使用NSWindow而不是NSMenu。一种方法是在您的NSSearchField委托中实现这一点,假设您有一个指向NSSearchFieldIBOutlet

代码语言:javascript
复制
- (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:而不是controlTextDidChange:的原因。您还应该查看NSEvent's Class Reference,了解事件的更多自定义信息。

票数 8
EN

Stack Overflow用户

发布于 2015-02-11 15:21:55

苹果的some sample代码与你需要的代码相似。示例代码使用NSTextField (它是NSSearchField的父类)。希望这能解决你的问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8089421

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档