首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >停止多次打开NSPopover

停止多次打开NSPopover
EN

Stack Overflow用户
提问于 2012-09-23 19:58:15
回答 2查看 670关注 0票数 1

我有一个NSButton,当被点击时,它会打开一个NSPopover,我唯一的问题是,当再次单击按钮时,NSPopover会在另一个按钮的顶部再次打开,弹出窗口是用以下命令打开的:

代码语言:javascript
复制
- (IBAction)openSettingsPopover:(id)sender {
    NSViewController *controller = [[NSViewController alloc] initWithNibName:@"Settings" bundle:nil];
    NSPopover *popover = [[NSPopover alloc] init];
    [popover setContentSize:NSMakeSize(288.0f, 170.0f)];
    [popover setContentViewController:controller];
    [popover setAnimates:YES];
    [popover showRelativeToRect:[sender bounds] ofView:sender preferredEdge:NSMaxXEdge];
}

如果用户在视图之外单击,我该如何处理关闭弹出窗口而不是打开另一个弹出窗口呢?提前谢谢。

EN

回答 2

Stack Overflow用户

发布于 2012-12-01 18:05:00

保留对NSPopover实例的引用,在打开新实例之前检查它是否不是-nil

代码语言:javascript
复制
- (IBAction)openSettingsPopover:(id)sender {
    if (self.settingsPopover) {
        // Close it when clicked again, or simply return
        [self.settingsPopover close];
    }

    self.settingsPopover = [[NSPopover alloc] init];
    ...
}
票数 3
EN

Stack Overflow用户

发布于 2012-12-19 17:21:57

一种更简单的方法是改变它的行为。只需将behavior属性设置为NSPopOverBehaviourTransient,当用户与另一个不在弹出窗口中的UI元素交互时,它将被清除。

代码语言:javascript
复制
[popover setBehaviour:NSPopOverBehaviourTransient];
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12552172

复制
相关文章

相似问题

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