如何设置在 NSSavePanel 中选择的文件名部分?我只想选择文件名而不是文件扩展名。
这是我注意到的。如果我 setAllowedFileTypes: 对于保存面板,则只选择文件名而不选择文件扩展名。但是,如果我没有设置允许的文件类型,则选择文件扩展名和文件名。
我不想使用 setAllowedFileTypes 但我仍然想控制选择以便不选择文件扩展名。可以这样做吗?
如何设置在 NSSavePanel 中选择的文件名部分?我只想选择文件名而不是文件扩展名。
这是我注意到的。如果我 setAllowedFileTypes: 对于保存面板,则只选择文件名而不选择文件扩展名。但是,如果我没有设置允许的文件类型,则选择文件扩展名和文件名。
我不想使用 setAllowedFileTypes 但我仍然想控制选择以便不选择文件扩展名。可以这样做吗?
我想到了。我以前不知道这一点,但是如果正在编辑包含文本的某个对象,则每个窗口都有一个字段编辑器。这样一个保存面板有一个,因为正在编辑文件名字段。字段编辑器只是一个 NSTextView,因此有一个方法 setSelectedRange:。所以我使用了这些知识,这就是解决方案。任何时候只要你想选择文件名就可以在 NSSavePanel 上调用它。
NSText* editor = [savePanel fieldEditor:NO forObject:nil];
if (editor) {
NSString* nameFieldString = [savePanel nameFieldStringValue];
NSString* nameFieldExt = [nameFieldString pathExtension];
if (nameFieldExt != nil) {
NSInteger newLength = [nameFieldString length]-[nameFieldExt length]-1;
[editor setSelectedRange:NSMakeRange(0, newLength)];
}
}
如果您只想让保存面板突出显示文件名,请设置
allowedFileTypes
包括您指定的默认文件类型
nameFieldStringValue
您可能还需要指定。
allowsOtherFileTypes = true;