我有以下单个代码文件,其中我试图在不使用笔尖或Xcode的情况下以尽可能少的代码创建具有基本功能的Cocoa应用程序。我已经从以下博客文章中获取了大部分信息,其中发布了等效的Objective-C代码:(http://www.cocoawithlove.com/2010/09/minimalist-cocoa-programming.html)。我所做的唯一主要更改是管理窗口的AppDelegate类,通常是在Xcode项目中完成的。
import Cocoa
class AppDelegate: NSObject, NSApplicationDelegate {
var window: NSWindow
override init() {
self.window = NSWindow()
self.window.setFrame(NSRect(x: 0, y: 0, width: 1280, height: 720), display: true)
self.window.collectionBehavior = .FullScreenPrimary
self.window.styleMask = NSTitledWindowMask | NSClosableWindowMask | NSMiniaturizableWindowMask
self.window.title = "Main Window"
}
func applicationDidFinishLaunching(notification: NSNotification) {
window.makeKeyAndOrderFront(self)
}
func applicationShouldTerminateAfterLastWindowClosed(sender: NSApplication) -> Bool {
return true
}
}
autoreleasepool {
NSApplication.sharedApplication()
NSApp.setActivationPolicy(.Regular)
let delegate = AppDelegate()
NSApp.delegate = delegate
let mainMenu = NSMenu()
NSApp.mainMenu = mainMenu
let applicationMenuItem = NSMenuItem()
mainMenu.addItem(applicationMenuItem)
let applicationMenu = NSMenu()
let quitMenuItem = NSMenuItem()
quitMenuItem.action = #selector(NSApp.terminate(_:))
quitMenuItem.keyEquivalent = "q"
quitMenuItem.title = "Quit Cocoa Window Test"
applicationMenu.addItem(quitMenuItem)
applicationMenuItem.submenu = applicationMenu
NSApp.activateIgnoringOtherApps(true)
NSApp.run()
}
我使用以下命令从终端成功编译:
swiftc -o bin/CocoaWindowTest -g -framework Cocoa ./src/main.swift
我的问题出在菜单上。尽管⌘Q键盘快捷键可以按预期工作,但我创建的应用程序菜单无法打开,并且我无法弄清楚原因。
通过NSApp.activateIgnoringOtherApps()
在NSApp.run()
已经被调用之后调用来解决该问题。总而言之,我的代码的主要部分现在读取如下内容:
autoreleasepool {
NSApplication.sharedApplication()
NSApp.setActivationPolicy(.Regular)
let delegate = AppDelegate()
NSApp.delegate = delegate
// Menu setup here...
NSApp.run()
NSApp.activateIgnoringOtherApps(true)
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句