我想阻止用户在打开NSOpenpanel时选择一些文件类型。 我目前可以做的是阻止他访问所有文件并允许一些,但我想允许除了一些文件之外的所有文件。
NSOpenpanel*Openpane = [NSOpenpanl openpanel];
[Openpanel setAllowFileTypes(NSArray*)];
但我希望用户选择除文件之外的所有文件,而不是从所有文件中选择一些文件。
答案 0 :(得分:1)
您可以通过调用[-NSOpenPanel setAllowedFileTypes:]
并传入允许的文件扩展名数组来设置可接受文件类型的列表。有关详细信息,请参阅the documentation:
文件类型可以是公共文件扩展名,也可以是UTI。 nil值表示可以使用任何文件类型。默认值为nil。
如果你想过滤掉一些文件名而不是其他文件名,我认为你可以使用NSOpenSavePanelDelegate
方法-panel:shouldEnableURL:
对于NSOpenPanel委托,询问委托是否应在面板中启用指定的URL。
答案 1 :(得分:0)
为面板实施委托。 NSOpenPanel
从其超类delegate
继承NSSavePanel
属性。
在委托中,实施:
- (BOOL) panel:(id)sender shouldEnableURL:(NSURL*)url;
或:
- (BOOL) panel:(id)sender validateURL:(NSURL*)url error:(NSError**)outError;
如果您可以决定是否应该快速有效地启用给定的URL,则应该使用第一个。它会经常被调用。它控制是否可以在面板中选择给定的URL。
如果您的决定很慢或需要大量CPU或I / O,则应使用第二个。仅在用户单击“打开”按钮时调用它。这不是最好的用户体验。最好是防止用户做出错误的选择,而不是让他们做出错误的选择并在最后时刻拒绝。
所有这一切都说,允许用户选择除 MP3之外的任何种文件,这有点奇怪。真的没有其他限制吗?