投稿日:

【Swift】UIKeyCommandでUIKeyModifierFlagsを複数セットする方法

swift uikeycommand uikeymodifierflags




上のアイキャッチ画像はドローンを表現してみたんですが、意外と気持ちわるくなってしまいました。

さて、外付けキーボードのキーボードショートカットを拾うためにUIKeyCommandを使いますが、
shift + command + Aのように複数の装飾キーを同時に登録したい場合もあるかと思います。

この部分でちょっとハマりましたので解決法をご紹介。







デフォルト定数をなぜか複数セットできない


ネットを徘徊してみると、

modifierFlags: UIKeyModifierFlags.Shift | UIKeyModifierFlags.Command

のようにUIKeyModifierFlags.Shift | UIKeyModifierFlags.Commandとやれば同時登録できるみたいなこと書いてあるんですが、フツーにエラーなんですよ。笑

swift uikeycommand modifierflags 複数


これに小一時間悩んだですが、rawValueを直接ぶち込んで差し上げましょう。


UIKeyModifierFlags.init(rawValue: 1048576 | 131072)



各キーのrawValueをこちら。

	// AlphaShift:65536
    // Alternate:524288
    // Command:1048576
    // Shift:131072
    // Control:262144

これで複数の装飾キーをひとつのアクションに登録させることができます。



(おまけ)装飾キーなしの場合


逆に装飾キーをなにも登録したくないときもあるかと思います。
たとえばtabキーのみなどはその典型ですね。

この場合は
UIKeyModifierFlags.init(rawValue: 0)
を直接ぶち込んで差し上げましょう。

ちなみにtabキーの登録はinput:引数に"\t"で、
returnキーは"\n"とか"\r"だった気がします(間違ってたらスミマセン)



個人的にはスペースキーも装飾キーとして使いたかったりするんですがiOS9では無理っぽいですね。


Sponsored Link





Comment