呼唤表情符号&来自NSButton动作的符号选择器

时间:2016-07-27 11:40:03

标签: swift xcode macos emoji

我是Swift的新手,目前正在为macOS开发一个小型消息传递应用程序。基本应用程序已完成,但我正在尝试添加表情符号选择器。

我想添加一个按钮,显示“Emoji& Symbols”窗口。在启动应用程序时会自动将其添加到“编辑”菜单中,但我希望通过NSButton按钮弹出它(就像在本机Mac消息应用程序中一样)。

有没有办法调用系统函数来显示表情符号选择器,或者是一种模拟键盘快捷键(ctrl + cmd + space)的方法?如果是这样,我需要采取哪些步骤来实施它?

3 个答案:

答案 0 :(得分:2)

由于建议使用键盘快捷键,

认定了它。

下面是我使用的代码。我无法模拟按下两个修改键,因此解决方案是创建一个自定义的CGEventFlags项。

unqualified-id

答案 1 :(得分:0)

使用IBOutlets的简单示例

class ViewController: NSViewController {

    @IBOutlet weak var textView: NSTextField!

    override func viewDidLoad() {
        super.viewDidLoad()

        // Do any additional setup after loading the view.
    }

    override var representedObject: Any? {
        didSet {
        // Update the view, if already loaded.
        }
    }

    @IBAction func buttonTapped(_ sender: Any) {
        textView.becomeFirstResponder()
        NSApp.orderFrontCharacterPalette(textView)
    }
}

答案 2 :(得分:0)

let commandControlMask = (CGEventFlags.maskCommand.rawValue | CGEventFlags.maskControl.rawValue)
let commandControlMaskFlags = CGEventFlags(rawValue: commandControlMask)

 // Press Space key once
let space = CGEventSource(stateID: .hidSystemState)
let keyDown = CGEvent(keyboardEventSource: space, virtualKey: 49 as CGKeyCode, keyDown: true)
keyDown?.flags = commandControlMaskFlags
keyDown!.post(tap: .cghidEventTap)
let keyUp = CGEvent(keyboardEventSource: space, virtualKey: 49 as CGKeyCode, keyDown: false)
keyUp?.flags = commandControlMaskFlags
keyUp?.post(tap: .cghidEventTap)

已针对Swift 5.1更新。但是要求用户授予访问权限。