Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xcode MASShortcut框架在Swift项目中的快速使用_Xcode_Swift_Macos_Cocoa_Macos Carbon - Fatal编程技术网

Xcode MASShortcut框架在Swift项目中的快速使用

Xcode MASShortcut框架在Swift项目中的快速使用,xcode,swift,macos,cocoa,macos-carbon,Xcode,Swift,Macos,Cocoa,Macos Carbon,我在Swift OSX项目中实现()时遇到问题,无法侦听全局热键。我已经通过CocoaPods导入了框架,我有一个MassShortCutView实例: @IBOutlet weak var testShortcutView:MASShortcutView! 我还了解了如何使用快捷方式监视和触发某些内容(请告诉我这是否正确): 这里的问题是,我如何从MassShortCutView中获取关键代码和修改标签? 我真的提前感谢你们,我到处都找了,但我找不到一个关于如何在swift上这样做的例子

我在Swift OSX项目中实现()时遇到问题,无法侦听全局热键。我已经通过CocoaPods导入了框架,我有一个MassShortCutView实例:

@IBOutlet weak var testShortcutView:MASShortcutView!
我还了解了如何使用快捷方式监视和触发某些内容(请告诉我这是否正确):


这里的问题是,我如何从MassShortCutView中获取关键代码和修改标签?



我真的提前感谢你们,我到处都找了,但我找不到一个关于如何在swift上这样做的例子。我只能找到objective-c,我想不出来。下面的代码将为Cmd+Shift+K组合键注册快捷方式处理程序

let shortcut = MASShortcut.init(keyCode: UInt(kVK_ANSI_K), modifierFlags: UInt(NSEventModifierFlags.CommandKeyMask.rawValue + NSEventModifierFlags.ShiftKeyMask.rawValue))

MASShortcutMonitor.sharedMonitor().registerShortcut(shortcut, withAction: {
    print("Hello world")
})
Cmd和Shift-修改键。您应该在modifierFlags参数中设置它们。NSEventModifierFlags枚举中提供了可能值的完整列表

为方便起见,我将示例项目放在github上:

处理快捷方式更改的:

shortcutView.shortcutValueChange = { (sender) in

    let callback: (() -> Void)!

    if self.shortcutView.shortcutValue.keyCodeStringForKeyEquivalent == "k" {
        callback = {
            print("K shortcut handler")
        }
    } else {
        callback = {
            print("Default handler")
        }
    }

    MASShortcutMonitor.sharedMonitor().registerShortcut(self.shortcutView.shortcutValue, withAction: callback)
}
我已推动回购协议的变更。我建议尝试以下场景:

使用快捷方式视图:

  • 设置Cmd+Shift+K快捷键

  • 设置Cmd+Shift+J快捷键

  • 尝试此快捷方式-应执行不同的回调

  • 希望能有所帮助。

    在Swift 5中

    let shortcut = MASShortcut(keyCode: kVK_ANSI_K, modifierFlags: [.command, .shift])
    
    MASShortcutMonitor.shared()?.register(shortcut, withAction: {
        print("hello")
    })
    

    至少我该如何从中获得keycode和modifierFlags?请大家注意,这是我的应用程序的最后一个细节。我的这篇博文可能会有所帮助:谢谢回复!不幸的是,这不是问题所在,我知道如何创建硬编码的快捷方式。但我不明白如何使用MASShortcutView让用户设置自己的快捷方式。你能把这个加在你的答案上吗?@wavves好的,我会这么做的,有人花时间帮我真是太好了。Swift是一个向新手开放应用程序开发的好尝试,但它仍然缺乏翻译所有objective-c示例的支持。应鼓励开发人员更新其文档,以包括swift支持。谢谢@谢谢你的反馈。我在这里的某个地方看到了一个框架创建者(zoul)。我们可以提供您的反馈。关于整个情况,我相信iOS/OSX软件开发的主要部分将在1-2年内从Obj-C转移到Swift。一旦实现了这一点,所有不断发展的框架都将获得Swift的一流支持。所以这只是时间问题。此外,我渴望看到Swift 3发布后会发生什么。它是否真的会跨平台?有一天,我可以在SwiftAfter中为iOS/OSX,尤其是Android和Linux开发应用程序。我又有一件事困扰着我,当我改变以前的快捷方式时,我怎么能注销它们呢?当我设置一个新的,前一个继续工作。
    let shortcut = MASShortcut(keyCode: kVK_ANSI_K, modifierFlags: [.command, .shift])
    
    MASShortcutMonitor.shared()?.register(shortcut, withAction: {
        print("hello")
    })