MASShortcut没有这样的模块

时间:2016-07-29 04:34:54

标签: swift xcode macos cocoa cocoapods

我一直尝试使用MASShortcut并按照说明在那里使用cocoapods添加它。然后我将它添加到我的< proj> -Bridging-Header.h 文件中,import将其添加到我的主swift文件中,但我一直收到错误

  

没有这样的模块'MASShortcut'

这是我的设置:

AppDelegate.swift:

import Cocoa
import Carbon
import MASShortcut

var kShortCut: MASShortcut!

@IBOutlet weak var shortcutView: MASShortcutView!

@NSApplicationMain
class AppDelegate: NSObject, NSApplicationDelegate {

    @IBOutlet weak var window: NSWindow!


    override func awakeFromNib() {
        ... omitted ...    
    }

    override func viewDidLoad() {
        super.viewDidLoad()
        shortcutView.shortcutValueChange = { (sender) in

            let callback: (() -> Void)!

            if    self.shortcutView.shortcutValue.keyCodeStringForKeyEquivalent == "k" {

            self.kShortCut = self.shortcutView.shortcutValue

            callback = {
                print("K shortcut handler")
            }
        } else {
            callback = {
                print("Default handler")
            }
        }
MASShortcutMonitor.sharedMonitor().registerShortcut(self.shortcutView.shortcutValue, withAction: callback)

和我的 Podfile

target 'myapp' do

  # Comment this line if you're not using Swift and don't want to use   dynamic frameworks
  use_frameworks!

  pod 'MASShortcut', '~> 2'

  # Pods for myapp

  target 'myappTests' do
    inherit! :search_paths
    # Pods for testing
  end
end

最后 proj-Bridging-Header.h

#import <Cocoa/Cocoa.h>
#import <MASShortcut/Shortcut.h> 

1 个答案:

答案 0 :(得分:1)

以下是AppDelegate的外观。请注意任何import MASShorcut的缺席。

import Cocoa

@NSApplicationMain
class AppDelegate: NSObject, NSApplicationDelegate {

    var kShortCut: MASShortcut!
    @IBOutlet weak var window: NSWindow!

    @IBOutlet weak var shortcutView: MASShortcutView!

    override func awakeFromNib() {

        shortcutView.shortcutValueChange = { (sender) in

            let callback: (() -> Void)!
            if self.shortcutView.shortcutValue.keyCodeStringForKeyEquivalent == "k" {

                self.kShortCut = self.shortcutView.shortcutValue

                callback = {
                    print("K shortcut handler")
                }
            } else {
                callback = {
                    print("Default handler")
                }
            }
            MASShortcutMonitor.shared().register(self.shortcutView.shortcutValue, withAction: callback)
        }
    }
}

桥接标题应如下所示:

#ifndef Testin_Bridging_Header_h
#define Testin_Bridging_Header_h

#import <MASShortcut/Shortcut.h>

#endif /* Testin_Bridging_Header_h */

Shortcut.h导入所有其他头文件。 Testin是我的应用程序的名称(当然要测试)

其他一些提示:

  • 确保在应用程序的构建设置中设置桥接标头。
  • 如果最初没有构建框架,请尝试使用MASShortcut方案构建。
  • AppDelegate没有生命周期事件,您需要使用NSViewController或NSWindowController子类来使用生命周期方法(即viewDidLoad)。