2010-04-18 109 views
2

如何设置在NSSavePanel中选择的文件名部分?我只想选择文件名,而不是文件扩展名。NSSavePanel选择文件名的一部分

这是我注意到的。如果我为保存面板设置了AllAllowedFileTypes:那么只会选择文件名,但不会选择文件扩展名。但是,如果我没有设置允许的文件类型,则文件扩展名与文件名一起选择。

我不想使用setAllowedFileTypes,但我仍然想要控制选择,以便不选择文件扩展名。可以这样做吗?

回答

2

我想通了。我之前不知道这一点,但如果某个包含文本的对象正在编辑中,那么每个窗口都有一个字段编辑器。因为这样的保存面板有一个,因为正在编辑文件名字段。一个字段编辑器只是一个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)]; 
    } 
}