NSSavePanel выбирает часть имени файла - PullRequest
2 голосов
/ 18 апреля 2010

Как установить часть имени файла, выбранную в NSSavePanel? Я хочу только выбрать имя файла, а не его расширение.

Вот что я заметил. Если я установилAllowedFileTypes: для панели сохранения, то будет выбрано только имя файла, но не расширение файла. Однако, если я не установлю разрешенные типы файлов, тогда будет выбрано расширение файла вместе с именем файла.

Я не хочу использовать setAllowedFileTypes, но я все еще хочу контролировать выбор, чтобы расширение файла не было выбрано. Можно ли это сделать?

1 Ответ

2 голосов
/ 19 апреля 2010

Я понял это. Я не знал этого раньше, но в каждом окне есть редактор полей, если какой-либо объект, содержащий текст, редактируется. Как таковая панель сохранения имеет одну, потому что поле имени файла редактируется. Редактор полей - это просто 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)];
    }
}
...