やりたいこと
iPadのソフトウェアキーボードには予測変換候補が表示されるエリアの両端にボタンを3つ配置できる。
デフォルトだと左側にUndoとRedo、ペーストボタンが表示され、右側にはなにもないパターンが多いと思う。
この右側や左側に自分で用意したボタンを表示できないのだろうか?
Shortcuts BarとUITextInputAssistantItem
お恥ずかしながらそのボタンを表示するところの名前がまったくわからず、「ios keyboard ボタン」だとかでググるも手がかりがないまま3日目を迎えたが、「swift keyboard icon」で画像検索したら、とうとう見つけた!
予測変換候補が表示されるエリアは「Shortcuts Bar」と呼ぶのだと!
そして予測変換候補が表示されるエリアの両端に表示するボタンを制御するクラスは「UITextInputAssistantItem」なのだと!!
UITextInputAssistantItemの使い方
基本的にはUINavigationBarやUIToolBarにボタンをセットするように、UIBarButtonItemをUITextFieldのinputAssistantItemに入れるだけです。
let playButton = UIBarButtonItem(barButtonSystemItem: .play, target: self, action: #selector(tappedShortcutBarPlayButton(_:)))
let shortcutBarButtons = UIBarButtonItemGroup(barButtonItems: [playButton], representativeItem: nil)
//ShortcutBarの右側に追加したいのであればinputAssistantItemのtrailingBarButtonGroupsへ代入
textField.inputAssistantItem.trailingBarButtonGroups = [shortcutBarButtons]
//左側に追加するのであればleadingBarButtonGroupsへ
textField.inputAssistantItem.leadingBarButtonGroups = [shortcutBarButtons]
わからなければ公式ドキュメントもチェック
あとがき
自分の探し方が悪かったのかなとも思いますが、自分みたいに悩んでいる方の一助になれば幸いです。