首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >点击显示NSPopover从NSTokenField令牌

点击显示NSPopover从NSTokenField令牌
EN

Stack Overflow用户
提问于 2012-04-23 21:45:23
回答 3查看 954关注 0票数 1

当单击令牌时,我试图显示来自NSTokenField令牌的NSTokenField

这些标记具有显示菜单的内置方式,因此从设计的角度来看,它与此操作没有什么不同。

但是,在单击令牌时,似乎没有执行任意代码的任何(好的)方法。

我已经成功地将一些代码插入到- tokenField:menuForRepresentedObject:中,但它远非优雅。

假设- tokenField:menuForRepresentedObject:是单击令牌时执行代码的唯一方法,那么我还有另一个问题:获取表示令牌的NSRect,以便NSPopover能够与所述令牌保持可视化关系。我尝试过做一些字符串杂耍,弄清楚令牌是如何最先出现的,但是它还远远不可靠,甚至需要一个没有文档的方法。

底线:如何在NSTokenField中显示所选令牌中的NSPopover

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-04-24 00:37:43

这就是我最后要做的。我正在开发一个开源的NSTokenField替代方案,它内置了这个功能。

代码语言:javascript
复制
// in an NSWindowController
- (NSMenu *)tokenField:(NSTokenField *)tokenField menuForRepresentedObject:(id)representedObject
{
    NSRect displayRect = NSMakeRect(([NSEvent mouseLocation].x - 2.5),
                                    ([NSEvent mouseLocation].y - 2.5),
                                    5, 5);
    displayRect = [self.window convertRectFromScreen: displayRect];


    // establish popover from displayRect ...
}

它看上去很棒,尽管感觉非常受攻击(并且被精确地关闭了1 1px )。

票数 1
EN

Stack Overflow用户

发布于 2012-04-24 00:20:02

我认为这是不可能的(见我的努力here)。问题是,单个令牌不会以这样的方式公开,您可以引用它的边界以便将其与弹出器连接起来。

票数 1
EN

Stack Overflow用户

发布于 2014-01-06 06:04:48

另一种选择是使用NSMenuItem支持任意视图的能力:

代码语言:javascript
复制
- (NSMenu *)tokenField:(NSTokenField *)tokenField menuForRepresentedObject:(id)representedObject {
    NSMenu *menu = [[NSMenu alloc] init];
    NSMenuItem *item = [NSMenuItem alloc] init];
    [item setRepresentedObject: representedObject];

    NSNib *nib = [[NSNib alloc] initWithNibNamed: @"token" bundle: nil];
    [nib instantiateWithOwner: item topLevelObjects: nil];

    [menu addItem: item];
    return menu;
}

然后,您可以创建一个用户界面,其中文件所有者是一个NSMenuItem,它连接到一个自定义视图,其中包含您在Popover中想要的所有内容。可以使用representedObject绑定到nib中的值。

我现在还在做这个的早期阶段。我还没有将我的NSManagedObjects连接到令牌字段,我只是使用一个字符串数组进行测试,但是这样做确实会产生类似Popover的效果,除了小的角指针。看起来比我在研究这件事时看到的其他黑客要好得多,也要简单得多。

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

https://stackoverflow.com/questions/10288781

复制
相关文章

相似问题

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