【问题标题】:Strange behavior with accessory views on NSSavePanel and NSOpenPanel in sandboxed app沙盒应用程序中 NSSavePanel 和 NSOpenPanel 上的附件视图的奇怪行为
【发布时间】:2012-07-16 00:06:11
【问题描述】:

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

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

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

[openPanel beginSheetModalForWindow:appWindow completionHandler:openPanelHandler];

这仅在启用应用沙盒时发生。

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

当我打开任务控制并通过应用程序窗口移动鼠标指针时,我注意到一个“不可见的”窗口,并且选择它时可以控制附件视图(所有控件工作),但它看起来从打开中分离或如屏幕截图所示保存面板。

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

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

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

编辑

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

更新 1

我将用作辅助视图的视图子类化并注意到

- (void)viewWillMoveToSuperview:(NSView *)newSuperview

被调用,但是

- (void)viewDidMoveToSuperview

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

更新 2

我确认应该调用- (void)viewDidMoveToSuperview,在测试应用上这两个方法都被调用了。

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

【问题讨论】:

    标签: cocoa sandbox nsopenpanel nssavepanel accessoryview


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-04-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-13
      • 2015-11-29
      • 2019-06-11
      • 1970-01-01
      相关资源
      最近更新 更多