ちょっと良いタイトルが思いつかないし、なんかよく分かんないタイトルになってしまった。
やりたかったことはiOSはてブアプリのタグ入力の画面のようなやつです。
キーボード上部のSegmented Controlでキーボード部分が切り替えるみたいなことがやりたかったのです。
キーボード上部にViewを表示
はてブアプリの例だとキーボード、おすすめタグ、タグのSegmented Controlの部分の表示です。
UIView *inputAccessoryView = ... // なんかView self.textField.inputAccessoryView = inputAccessoryView;
キーボードが表示される対象のUITextFieldもしくはUITextViewのinputAccessoryViewに表示したいViewを設定します。
これでキーボードが表示されると同時にinputAccessoryViewに設定したViewも表示されます。
キーボードの部分を置き換える
はてブアプリの例だと通常のキーボード(左側のスクショ)とタグ一覧(右側のスクショ)で切り替えが可能になってます。
これは例えばボタンが押された時に次のようにすると切り替えができます。
UIView *inputView = ... // なんかView self.textField.inputView = inputView; [self.textField reloadInputViews];
UITextFieldもしくはUITextViewのinputViewに設定します。
reloadInputViewsっていうのが重要で、これがないと既にキーボードが表示されている状態で切り替えがされません。
通常のキーボードに戻すにはinputViewにnilを設定します。
self.textField.inputView = nil; [self.textField reloadInputViews];