[英]How to open NSSavePanel in FIFinderSync
我正在制作一個可以在選定文件夾中創建文件的 Finder 擴展。我已經將“用戶選定文件”的“權限/訪問”設置為“讀/寫”。 但是面板不顯示。
override func menu(for menuKind: FIMenuKind) -> NSMenu {
// Produce a menu for the extension.
let menu = NSMenu(title: "")
menu.addItem(withTitle: "Example Menu Item", action: #selector(sampleAction(_:)), keyEquivalent: "")
return menu
}
@IBAction func sampleAction(_ sender: AnyObject?) {
let savePanel = NSSavePanel()
savePanel.canCreateDirectories = true
savePanel.showsTagField = false
savePanel.nameFieldStringValue = "newfile.txt"
savePanel.level = NSWindow.Level(rawValue: Int(CGWindowLevelForKey(.modalPanelWindow)))
savePanel.begin { (result) in
if result.rawValue == NSApplication.ModalResponse.OK.rawValue {
//write file
}
}
}
我設置FIFinderSyncController.default().directoryURLs = [URL(fileURLWithPath: "/")]
我發現一些 Finder 擴展應用程序(例如“Easy New File”)可以打開保存面板。 他們是如何實現的?
添加NSApp.activate(ignoringOtherApps: true)
和DispatchQueue.main.async
。
NSApp.activate(ignoringOtherApps: true)
DispatchQueue.main.async {
let savePanel = NSSavePanel()
savePanel.directoryURL = URL(fileURLWithPath: target.path)
savePanel.canCreateDirectories = true
savePanel.showsTagField = false
savePanel.nameFieldStringValue = "newfile".localized
savePanel.level = NSWindow.Level(rawValue: Int(CGWindowLevelForKey(.modalPanelWindow)))
if (savePanel.runModal() == NSApplication.ModalResponse.OK),let url = savePanel.url{
//wirte file to url
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.