NSApplication菜单栏在无笔尖的可可应用程序中未按预期响应

杰瑞德(Jared)

我有以下单个代码文件,其中我试图在不使用笔尖或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键盘快捷键可以按预期工作,但我创建的应用程序菜单无法打开,并且我无法弄清楚原因。

杰瑞德(Jared)

通过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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

无法在GoTK3应用程序中创建菜单栏

从Electron应用程序中删除菜单栏

如何为Mac创建菜单栏应用程序

在OS X菜单栏中更改Tkinter应用程序的标题

可可应用程序菜单栏不可单击

Objective-C:可可应用程序可以是“仅菜单”应用程序吗?

从桌面加载NSImage在可可应用程序中无效

启用或禁用可可应用程序中不同视图控制器上的菜单项?

QtQuick应用程序中的QML菜单栏显示

键盘快捷键在macOS的菜单栏应用程序中不起作用

任何应用程序的菜单栏都应始终显示

菜单栏中缺少应用程序的菜单

我的应用程序中的菜单栏在GNOME Shell中位于何处?

如何在Cocoa应用程序中隐藏菜单栏?

在可可应用程序中组织课程

没有“编辑”菜单项的可可应用程序中是否可以具有“编辑”功能?

如何在菜单栏中的应用程序中放置徽章图标?

VLCKit:可可应用程序中的VLCMediaPlayerDelegate

如何创建出现在顶部菜单栏中的桌面应用程序?

如何在快捷菜单栏应用程序中运行终端命令?

19.10:从触发应用程序的菜单栏中停用Alt键

可可应用程序(OS X App)中的OpenCV

可可应用程序中的Shift + Return键操作

使用菜单栏在 OS X 应用程序中创建一个新窗口

ubuntu 20.04 中少数应用程序的菜单栏和工具栏非常小

在顶部菜单栏中添加一个 appimage 应用程序

如何处理 Cocoa 菜单栏应用程序中的修饰键

如何在另一个可可应用程序中嵌入一个可可应用程序并将其作为子进程启动

检查菜单栏应用程序上的按键