NSPopover - 焦点丢失时隐藏? (点击popover之外) [英] NSPopover - Hide when focus lost? (clicked outside of popover)

查看:969
本文介绍了NSPopover - 焦点丢失时隐藏? (点击popover之外)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用 NSTableView doubleClickAction 显示 NSPopover 。这样的:

I'm using the doubleClickAction of a NSTableView to display a NSPopover. Something like this:

NSInteger selectedRow = [dataTableView clickedRow];
NSInteger selectedColumn = [dataTableView clickedColumn];


// If something was not selected, then we cannot display anything.
if(selectedRow < 0 || selectedColumn < 0)
{
    NSLog(@"Invalid selected (%ld,%ld)", selectedRow, selectedColumn);
    return;
} // End of something was not selected

// Setup our view controller, make sure if there was already a popover displayed, that we kill that one off first. Finally create and display our new popover.
DataInspectorViewController * controller =
[[DataInspectorViewController alloc] initWithNibName: @"DataInspectorViewController"
                                              bundle: nil];

if(nil != dataPreviewPopover)
{
    [dataPreviewPopover close];
} // End of popover was already visible

dataPreviewPopover = [[NSPopover alloc] init];
[dataPreviewPopover setContentSize:NSMakeSize(400.0f, 400.0f)];
[dataPreviewPopover setContentViewController:controller];
[dataPreviewPopover setAnimates:YES];
[dataPreviewPopover showRelativeToRect: [dataTableView frameOfCellAtColumn: selectedColumn row: selectedRow]
                     ofView: dataTableView
              preferredEdge: NSMinYEdge];

我的popovers在我双击的单元格中创建和删除。问题是,如果我点击任何地方之外的任何地方(像单击另一个单元格),我想要popover消失。我一直在环顾四周,但对于我的生活,我无法弄清楚如何做。

Which works just fine. My popovers get created and removed on the cells that I double click on . The problem is, I want to the popover to go away if I click anywhere outside of it (like a single click on another cell). I have been looking around, but for the life of me cannot figure out how to do it.

这是我认为是内置的popover,相当确定它是在iOS UIPopoverController 类),所以我只是想知道如果我缺少一些简单。

This is something I would assume is built into a popover, (I'm fairly certain it was in the iOS UIPopoverController class) so I'm just wondering if im missing something simple.

推荐答案

我认为你需要改变你的popover的属性行为(在代码或界面构建器)到

I think you need to change the property behavior of your popover (in code or on interface builder) to

dataPreviewPopover.behavior = NSPopoverBehaviorTransient;

NSPopoverBehaviorTransient
The system will close the popover when the user interacts with a user interface element outside the popover.

在docs中阅读更多内容:
https://developer.apple.com/library/mac/#documentation/AppKit/Reference/NSPopover_Class/Reference/ Reference.html

read more about this in docs: https://developer.apple.com/library/mac/#documentation/AppKit/Reference/NSPopover_Class/Reference/Reference.html

这篇关于NSPopover - 焦点丢失时隐藏? (点击popover之外)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆