是否有NSOpenPanel替代方案,或者可以在SwiftUI中对面板进行不同的样式设置?

是否有NSOpenPanel替代方案,或者可以在SwiftUI中对面板进行不同的样式设置?,swift,macos,appstore-sandbox,nsopenpanel,Swift,Macos,Appstore Sandbox,Nsopenpanel,我曾经问过一个类似的问题,甚至在最后一刻。看来要么我的问题搞错了,要么没人能/不想对这个话题发表评论 问题 我想授予对应用程序沙箱外部文件夹的访问权限。我知道我可以通过一个NSOpenPanel对话框来实现这一点——弹出一个模式,其中文件夹是预先选择的,因此是一个空视图,用户应该按下OK按钮 问题 由于我发现这个“带有随机OK按钮的空文件夹视图”对用户并不友好,我想知道是否有可能 使用NSOpenPanel替代或 调整面板的样式 因此,我只需弹出一个模式窗口,提醒用户应用程序需要访问文件夹(

我曾经问过一个类似的问题,甚至在最后一刻。看来要么我的问题搞错了,要么没人能/不想对这个话题发表评论

问题 我想授予对应用程序沙箱外部文件夹的访问权限。我知道我可以通过一个
NSOpenPanel
对话框来实现这一点——弹出一个模式,其中文件夹是预先选择的,因此是一个空视图,用户应该按下OK按钮

问题 由于我发现这个“带有随机OK按钮的空文件夹视图”对用户并不友好,我想知道是否有可能

  • 使用
    NSOpenPanel
    替代或
  • 调整面板的样式
因此,我只需弹出一个模式窗口,提醒用户应用程序需要访问文件夹(将在“提醒”窗口中打印出来),并带有“确定”和“取消”按钮。我不想显示系统上的位置、文件夹的空框以及所有其他显示的内容

澄清一下,这就是我所拥有的:

这就是我想要的(或类似的东西):

如果有人能告诉我这是否可行,我将不胜感激。至少给我指一些参考资料(到目前为止,我什么也找不到)

谢谢

不可能

NSOpenPanel和NSSavePanel对于沙盒应用程序有特殊的关系。它们类似于应用程序中的PowerBox应用程序,允许用户选择文件或文件夹,并将安全范围的URL返回到代码中

它们在


因此,如果不能使用NSSavePanel/NSOpenPanel API完成此操作,则无法完成此操作

我一直在寻找类似的东西,但没有成功。这真的很奇怪!我的意思是,我见过一些解决方案,可以将文件夹拖到应用程序中,那么为什么不可能有一个简单的提示呢?我真不敢相信没有人会遇到同样的问题?将文件夹拖到应用程序上会将其添加到沙箱中。每个实现沙盒的人都有这个问题。拖动文件夹是用户选择的文件的一个实例。你会在粘贴板上看到一个安全范围的URL。谢谢!这真的帮助我摆脱了疯狂。。。好吧,我想我得处理一下了。谢谢你的回答!是的,因此如果你将这些脚本放在容器文件夹中,你就可以访问它们,而无需与用户交互。很抱歉这个愚蠢的问题,但是我在哪里可以找到容器文件夹?我认为我只能在
../Library/Application scripts/com.developer.appName/
中运行自定义脚本,这是我的错
nsapplicationscripts目录
会将您带到您已经使用的脚本目录,而
NSLibraryDirectory
会将您带到
/Users/sallyjones/Library/Containers/com.developer.theApp/Data/Library/Library/com.developer,而
/Users/sallyjones/Library/Containers/com.developer.下面的区域就是您的应用程序自由区。考虑使用<代码> NSULSeApple SeCpPtTebug (运行沙盒中的自定义脚本的唯一方法)的运行脚本需要在代码>应用脚本中的脚本位置。