[iOS 10] Custom Keyboard で導入済みキーボードの一覧表示・切替を実現!

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

こんにちは。WWDC会場のあるサンフランシスコにいたのは3ヶ月前。とうとう、iOS 10 が正式公開されました!!

iOS 9 までは、App Extension の Custom Keyboard を使って、独自のキーボードを作る際、一つ大きな問題がありました。

スクリーンショット_2016-06-19_22_39_30

システム標準のキーボード切り替えボタンでは、長押しすることで、他の有効なキーボードをリスト表示できます。さらにその状態で、目的のキーボード名の上で Touch Up することで、ダイレクトにそのキーボードに切り替えることができます。

しかし、残念ながらこれまでは Custom Keyboard 上でそうした機能を実現する手段がありませんでした。

それが、iOS 10 からは可能になります。

本記事では、Custom Keyboard 上で他の有効なキーボードの一覧表示と、それらへのダイレクトな切替を実現する方法をご紹介します。

実装

Custom Keyboard の実装方法については、以下の記事をご参照ください。

[iOS 8] App Extensionでテンション倍増! – Custom Keyboard編 | Developers.IO

これまでのキーボード切替の実装方法

self.nextKeyboardButton.addTarget(self, action: #selector(advanceToNextInputMode), for: UIControlEvents.allTouchEvents)

上記コードでは、nextKeyboardButtonという名前で、キーボード切り替えボタンを作成しています。

これまでは、キーボードを切り替える唯一の手段がadvanceToNextInputModeで、次のキーボードに切り替えることのみが可能でした。

新しい方法

self.nextKeyboardButton.addTarget(self, action: #selector(handleInputModeList(from:with:)), for: .allTouchEvents)

iOS 10からは、handleInputModeList(from:with:)を使うことで、システムキーボードの切替ボタン同様の動きを実現できます。

スクリーンショット 2016-09-11 20.47.11

上記のコードを使うと、nextKeyboardButtonを長押しすることで、有効なキーボード一覧が書かれたフキダシが表示されます。さらに、目的のキーボード名の上で Touch Up することで、ダイレクトそのキーボードに切り替えられます!

さいごに

本記事では、Custom Keyboard 上で他の有効なキーボードの一覧表示と、それらへのダイレクトな切替を実現する方法をご紹介しました。

注:本記事では、Swift 3.0 の記法を採用しています。

参考資料

Framework Reference

Class Reference