2

我对 NSSavePanel 和 NSOpenPanel 的附件视图有疑问。

有时,(经常)当我打开这些面板之一时,附件视图不起作用(显示视图但控件似乎已禁用)。

我正在使用此代码显示面板:

[openPanel beginSheetModalForWindow:appWindow completionHandler:openPanelHandler];

这仅在启用 app-sandbox 时发生。

经过大量测试后,我发现发生的事情是视图放错了位置(未附加到面板上)。

When I open Mission Control and move the mouse pointer over the app windows I noticed that an "invisible" window hilighted and when select it I can take control over the accessory view (all controls work) but it appears detached from the open or save panel如屏幕截图所示。

截屏

我试图创建一个新应用程序只是为了测试这种行为,但无法重现它,所以我想这与我的应用程序有关。

任何暗示我可能做错了什么?

我不想为了解决这个问题而从头开始编写所有代码。

编辑

顺便说一句,当我关闭窗口时,就在窗口关闭之前,附件视图会闪烁控件的正确值。应用程序似乎没有及时添加视图以显示面板。

更新 1

我对用作辅助视图的视图进行了子类化,并注意到

- (void)viewWillMoveToSuperview:(NSView *)newSuperview

被称为,但是

- (void)viewDidMoveToSuperview

即使视图正确显示,也永远不会被调用,这是正常行为吗?

更新 2

我确认- (void)viewDidMoveToSuperview应该调用,在测试应用程序上调用了这两种方法。

我还注意到我的应用程序和测试应用程序之间存在细微差别。在我的应用程序上,面板只是向下滑动,但在测试应用程序上,面板似乎“向下翻转”(不知道具体如何描述)。面板的显示方式与我无关,我只是注意到它的显示方式不同。

4

1 回答 1

1

在尝试了很多事情后,我得出结论认为问题与项目的 ARC(自动引用计数)设置有关。

在我的情况下,我在目标上启用了 ARC,但在项目上启用了 ARC 之后(并处理了由此产生的错误和警告),现在一切正常。

于 2012-07-21T14:55:09.890 回答