gpt4 book ai didi

cocoa - 沙盒应用程序中 NSSavePanel 和 NSOpenPanel 上的附件 View 出现奇怪行为

转载 作者:行者123 更新时间:2023-12-03 17:14:20 24 4
gpt4 key购买 nike

我在使用 NSSavePanel 和 NSOpenPanel 上的附件 View 时遇到问题。

有时,(很多时候)当我打开这些面板之一时,附件 View 不起作用(显示了 View ,但控件似乎被禁用)。

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

[openPanel beginSheetModalForWindow:appWindow completionHandler:openPanelHandler];

这仅在启用应用程序沙箱时发生。

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

当我打开任务控制并将鼠标指针移到应用程序窗口上时,我注意到一个“不可见”窗口突出显示,当选择它时,我可以控制附件 View (所有控件都有效),但它似乎与打开的窗口分离或保存面板,如屏幕截图所示。

Screenshot

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

有任何迹象表明我可能做错了什么吗?

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

编辑

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

更新1

我对用作附件 View 的 View 进行了子类化,并注意到

- (void)viewWillMoveToSuperview:(NSView *)newSuperview

被调用,但是

- (void)viewDidMoveToSuperview

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

更新2

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

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

最佳答案

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

就我而言,我已在目标上启用 ARC,但未在项目上启用 ARC,在项目上启用 ARC(并处理由此产生的错误和警告)后,现在一切正常。

关于cocoa - 沙盒应用程序中 NSSavePanel 和 NSOpenPanel 上的附件 View 出现奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11496696/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com