2010-04-18 43 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)]; 
    } 
}