我是Swift的新手,目前正在为macOS开发一个小型消息传递应用程序。基本应用程序已完成,但我正在尝试添加表情符号选择器。
我想添加一个按钮,显示“Emoji& Symbols”窗口。在启动应用程序时会自动将其添加到“编辑”菜单中,但我希望通过NSButton按钮弹出它(就像在本机Mac消息应用程序中一样)。
有没有办法调用系统函数来显示表情符号选择器,或者是一种模拟键盘快捷键(ctrl + cmd + space)的方法?如果是这样,我需要采取哪些步骤来实施它?
答案 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更新。但是要求用户授予访问权限。