2016-07-27 4 views
2

私はSwiftで作業するのが初めてで、現在MacOS用の小さなメッセージングアプリケーションで作業しています。基本的なアプリケーションは完成しましたが、私は絵文字ピッカーを追加しようとしています。NSButtonアクションからEmoji&Symbolsピッカーを呼び出す

「絵文字&シンボル」ウィンドウを表示するボタンを追加したいとします。これはアプリケーションの起動時に自動的に「編集」メニューに追加されますが、NSButtonのプレス(ネイティブMacメッセージアプリのように)を使用してポップアップしたいと考えていました。

絵文字選択ツールを表示するためのシステム関数を呼び出す方法、またはキーボードショートカット(ctrl + cmd + space)をシミュレートする方法がありますか?もしそうなら、私はそれを実装するためにどのようなステップを取る必要がありますか?

+0

私は絵文字や記号の道をトリガする方法を発見していないが、これを見てみましょう:http://stackoverflow.com/questions/36375080/cocoa-simulating-commandtab-in-cgevent –

+0

間違いなく正しいトラックに私を入れてください。ご協力ありがとうございます! –

答えて

1

キーボードショートカットを使用することをお勧めします。

以下に、私が使用したコードを示します。私は2つの修飾キーが押されているのをシミュレートするのに困っていたので、解決策はカスタムCGEventFlags項目を作成することでした。

// Setup a custom CGEventFlags Item with value of .MaskControl and .MaskCommand 
    let commandControlMask = (CGEventFlags.MaskCommand.rawValue | CGEventFlags.MaskControl.rawValue) 
    let commandControlMaskFlags = CGEventFlags(rawValue: commandControlMask)! 

    // Press Space key once 
    let space = CGEventSourceCreate(.HIDSystemState) 
    let keyDown = CGEventCreateKeyboardEvent(space, 49 as CGKeyCode, true) 
    CGEventSetFlags(keyDown, commandControlMaskFlags) 
    CGEventPost(.CGHIDEventTap, keyDown) 
    let keyUp = CGEventCreateKeyboardEvent(space, 49 as CGKeyCode, false) 
    CGEventSetFlags(keyUp, commandControlMaskFlags) 
    CGEventPost(.CGHIDEventTap, keyUp) 
+0

アプリがサンドボックスで実行されている場合、これらのイベントを送信することはできません。私は、アプリケーションサンドボックスの範囲内でタスクを達成できる他のAPIについて認識していません。 – chockenberry

+3

これを行うには、[NSApp orderFrontCharacterPalette:nil]を使うことができます。http://twitter.com/lapcatsoftware/status/859539614373117952 – chockenberry