0

这个问题很简单。我有一个 NSPopover 属性,当用户单击我的 NSView 时,我用它来显示一些信息。这是我展示弹出框的方式:

[self.boxPopover showRelativeToRect:NSMakeRect(0, 0, POPOVER_SIZE, POPOVER_SIZE) ofView:_clickedBox preferredEdge:NSMinYEdge];

问题是:有没有办法ofView从弹出框获取参数使用的视图的引用?

用户可以在这个 NSViews 中点击很多,我用这个 iVar 跟踪。我正在做一项功能,需要查看新显示的视图是否与前一个视图不同(或不同)。

我想要类似的东西:

if (self.boxPopover.viewDisplayed != _clickedBox) ...

有没有办法从 popover 获得这个参考,或者真的不可能?

提前致谢,

4

1 回答 1

1

如果你查看 Xcode 的 AppKit/NSPopover.h,你会在 NSPopover 对象中看到:

NS_CLASS_AVAILABLE(10_7, NA)
@interface NSPopover : NSResponder {
@private
    ...
    ...
    id <NSPopoverDelegate> _delegate;
    ...
    ...
    NSView *_positioningView;
    ...
    ...

所以 popover 对象保留了一个指向其定位视图的指针,但也将其保持为私有,因此子类将无法使用它。

您可以做的一件事是为 NSPopover编写一个类别扩展,以添加一个 API 以返回 _positioningView。

于 2013-08-14T17:39:24.197 回答