258
(USキーボードから切り開ける場合。日本語のフリック入力キーボードの場合は216
)のとき、同様に通知されないけどこれは見た目の高さは変わらないので実質的に問題にならない。@IBAction func toggleInputView(_ sender: Any) { let wasFirstResponder = textField.isFirstResponder if wasFirstResponder { textField.resignFirstResponder() } if let _ = textField.inputView { textField.inputView = nil } else { let myInputView = UIView(frame: view.bounds) myInputView.frame.size.height = 275 myInputView.backgroundColor = .blue textField.inputView = myInputView } textField.reloadInputViews() if wasFirstResponder { textField.becomeFirstResponder() } }
こんな感じで、resignFirstResponder()
を挟む。それだけだとキーボードが閉じてしまうのでbecomeFirstResponder()
も呼ぶ。同じメソッド内で呼ぶぶんにはRunLoopが回らないので最終的に何ごともなかったようにキーボードはそのまま(変換中の日本語入力などは確定されてしまう)。