方法panelSelectionDidChange从NSOpenSavePanelDelegate协议调用两次

时间:2012-07-21 23:51:00

标签: objective-c cocoa nsopenpanel

我有一个实现NSOpenSavePanelDelegate协议的类,并且与NSOpenPanel相关联。

我在NSLog()方法中添加了- (void)panelSelectionDidChange:(id)sender,并注意到以下内容:

当我第一次选择文件时,panelSelectionDidChange被调用,并且检查[sender URL]我得到所选文件的URL,但是当我选择另一个文件时,panelSelectionDidChange被调用两次,第一次[sender URL]拥有最后一个网址,第二次调用[sender URL]时,网址为新选择的文件。

但是,如果我使用键盘箭头选择文件而不是点击它panelSelectionDidChange只使用正确的URL调用一次。

这是正常行为还是我做错了什么?

1 个答案:

答案 0 :(得分:0)

我也遇到了这个问题,我注意到这只发生在打开面板处于浏览器模式时,而不是列表,图标或预览(不确定这些是官方名称)。用户可以使用面板左上角的按钮更改此设置。

我相信第一次通话是在您第一次选择项目时发生的,而第二次通话是在预览显示在浏览器右侧时发生的。

不完全是我所知道的解决方案,但可能这些信息会有所帮助。