Jac*_*ack -1 macos xcode menubar swift
我正在创建一个应用程序,其中菜单栏似乎是在没有窗口的情况下让用户桌面清洁的最方便的方法.我已经在网上和堆栈溢出看过很多教程,但它们似乎只适用于Objective-C.我只使用Swift.如果您不知道菜单栏是什么,它们就是这些图标:
我希望我的应用程序有一个而不是一个恒定的完整窗口.如果可以,我怎么能在我的菜单栏上设置一个按钮来调出窗口.最后,我怎么能没有显示我的图标,但我仍然有查找器优势.(比如File,Edit ..).例如,
我已经尝试过了
Application is Agent (UIElement) to False
Run Code Online (Sandbox Code Playgroud)
在我的Info.plist中,但这也剥夺了我的finder优势.
大概你所说的是你想要编辑菜单中的文本编辑项目(如撤消,剪切,复制,粘贴,全选)在你的应用程序窗口中工作.
这些菜单项是另一个应用程序的一部分,仅在该应用程序中发送消息.它们不适用于您的应用程序,无论它是否是"代理"(没有自己的可见菜单栏).如果您的代理商应用程序的某个窗口是关键窗口,并且用户单击属于另一个应用程序的菜单标题(如文件或编辑),则该应用程序将激活,您的应用程序窗口将"重新签名"关键窗口状态.
您可以⌘X为您的应用程序制作通常的快捷键(如Cut),这很容易.当您的某个应用程序窗口是用户的关键窗口时,您的应用程序会收到键盘事件,并且您的NSApplication对象(自动为您创建)将检查其mainMenu键盘快捷键,即使主菜单未显示在屏幕上也是如此.
OS X"Cocoa Application"项目模板为您MainMenu.xib(或在Main.storyboard)中设置了一个主菜单栏,所有菜单项都连接到相应的操作.所以,如果你保持这种主菜单栏编辑菜单,在编辑菜单中的菜单项,并留下这些项目设置的快捷方式,然后将键盘快捷方式将工作,即使你设置LSUIElement到YES你的Info.plist,你的应用程序的窗口时,一个是关键窗口.换句话说,默认情况下快捷键将起作用,您必须更改内容才能使它们停止工作.
应用程序窗口中的文本字段仍然会获得默认的右键单击菜单,其中包含剪切,复制和粘贴等常用项目,因此您无需执行任何其他操作即可.
这是我的测试应用程序的内容MainMenu.xib:
我一个人离开了主菜单栏.我创建了一个单独的菜单,其中包含两个项目"Show Window"和"Quit".我已将"退出"的快捷方式设置为⌘Q,但此快捷方式无效.主菜单栏上的StatusItem>退出菜单项(在我的屏幕截图中不可见)具有相同的快捷键设置,这是重要的设置.我在另一个Quit项目上设置了快捷方式,因为它对用户可见,并且主菜单栏对用户不可见.
我已将此Quit项目连接到terminate:First Responder 的操作.(默认情况下,StatusItem> Quit菜单项以相同的方式连接.)
这是我的AppDelegate:
@NSApplicationMain
class AppDelegate: NSObject, NSApplicationDelegate {
@IBOutlet var window: NSWindow!
@IBOutlet var statusItemMenu: NSMenu!
var statusItem: NSStatusItem?
func applicationDidFinishLaunching(aNotification: NSNotification) {
self.statusItem = NSStatusBar.systemStatusBar().statusItemWithLength(NSVariableStatusItemLength)
let statusItem = self.statusItem!
let button = statusItem.button!
button.title = "Hello"
statusItem.menu = statusItemMenu
}
@IBAction func showWindow(sender: AnyObject) {
NSApp.activateIgnoringOtherApps(true)
window.makeKeyAndOrderFront(sender)
}
}
Run Code Online (Sandbox Code Playgroud)
我已将"显示窗口"菜单项连接到showWindow(_:)操作,我已将statusItemMenu插座连接到XIB中的独立菜单.
我还将"Application is Agent(UIElement)"设置为"YES" Info.plist.
当我运行此应用程序时,它会在菜单栏中创建状态项.我可以从项目中选择"显示窗口",然后我的窗口出现在前面,成为关键.我可以右键单击文本字段以获取其上下文菜单.我可以使用标准快捷方式来剪切/复制/粘贴/等,关闭窗口,甚至退出应用程序.
| 归档时间: |
|
| 查看次数: |
2755 次 |
| 最近记录: |