我正在使用doubleClickAction
of a NSTableView
显示一个NSPopover
。像这样的东西:
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];
效果很好。我的弹出窗口是在我双击的单元格上创建和删除的。问题是,如果我单击弹出窗口之外的任何位置(例如单击另一个单元格),我希望弹出窗口消失。我一直在环顾四周,但我一生都不知道该怎么做。
我认为这是内置在弹出窗口中的东西(我相当确定它是在 iOS 中)UIPopoverController
类)所以我只是想知道我是否错过了一些简单的东西。
您需要将弹出窗口的属性行为(在代码中或界面生成器上)更改为:
popover.behavior = NSPopover.Behavior.transient;
NSPopover.Behavior.transient
当用户与弹出窗口外部的用户界面元素交互时,系统将关闭弹出窗口。
阅读有关此内容的更多信息苹果的文档 https://developer.apple.com/documentation/appkit/nspopover.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)