Дело в том, что папка уже исправлена в приложении.
Это время, когда пользователь получает разрешение на доступ к этой папке. Используйте открытое (не сохраняемое) диалоговое окно, чтобы пользователь подтвердил выбор папки. Думайте об этом как о «диалоге подтверждения доступа», вы можете:
- Изменить метку кнопки «Открыть» на что-то другое, используя
prompt
- Установить
title
и message
, поэтому диалоговое окно является диалоговым окном подтверждения - установите исходную папку, указав
directoryURL
в качестве родительского для того, который вы хотите подтвердить (Примечание: любые изменения в directoryURL
после диалоговое окно закрыто и игнорируется, поэтому вы не можете заблокировать диалоговое окно для этой папки с помощью делегата didChangeToDirectoryURL
- в ранней песочнице вы могли, но Apple сейчас это остановила) - Установите
delegate
и используйте егоshouldEnable
и validate
обратные вызовы, чтобы убедиться, что только папка, которую вы хотите подтвердить, может быть выбрана или диалоговое окно отменено. - Установите
canCreateDirectories
& canChooseFiles
на false
, canChooseDirectories
наtrue
После того, как пользователь подтвердит доступ к папке, сохраните закладку безопасности в настройках вашего приложения. Ваше приложение теперь может восстановить доступ к этой папке в любое время. С этим разрешением вы можете создавать и открывать файлы и папки в этой папке, не используя NSOpenPanel
или NSSavePanel
снова.
С этого момента, чтобы ограничить пользователей сохранением в этой папке, откройте собственный диалог, чтобы запроситьпросто имя файла, пропуская часть пути и обход NSSavePanel
- вы можете выдавать себя за стандартные диалоги или создавать свои собственные с нуля.
HTH