在我自己的项目中,我无法让我的NSPopover分离到一个窗口,所以为了简化,我尝试了Apple示例。
我下载了苹果示例项目的新副本:http://developer.apple.com/library/mac/samplecode/Popover/Introduction/Intro.html
它的行为是一样的,也就是说我也不能拖动窗口来分离它。
该项目似乎提供了所有正确的窗口和控制器,并实现了detachableWindowForPopover:
委托方法。但是,该方法从未被调用。
有人知道可拆卸NSPopovers的秘密吗?
在键入问题时找到答案…
Mac OS X 10.10 Yosemite有一个新的委托方法:
- (BOOL)popover ShouldDetach:(NSPopover*)popover
Yosemite上的默认行为为"否"(不应分离)。因此,代理必须实现此方法才能使窗口可拆卸。这个示例项目没有实现这个方法,所以当在Yosemite上编译时,它不会分离(并且还会产生几个弃用警告——也许我应该接受它需要更新的提示)。
添加:
- (BOOL)popoverShouldDetach:(NSPopover *)popover {
return YES;
}
To MyWindowController.m修复了此问题。