LoginSignup
16
13

More than 5 years have passed since last update.

iOS9からiPadのキーボードの高さを計算する方法が微妙に変わってた

Last updated at Posted at 2016-11-16
  • Xcode8.0 + Swift3.0

よくあるキーボードの高さ取得方法(不完全)

不完全な例
    @objc private func keyboardDidShow(_ sender: NSNotification) {
        if let dic: Dictionary = sender.userInfo {
            if let value = dic[UIKeyboardFrameEndUserInfoKey] as? NSValue {
                print("height=\(value.cgRectValue.height)")
            }
        }
    }

iOS8辺りまではこんな感じでCGRectheight値をそのまま信じてもオッケーでしたが、iOS9からは外部キーボードを使ったときに、ショートカットバー(?)が出るようになったせいか、上記のものだと誤った高さになってしまいます。

Simulator Screen Shot 2016.11.16 17.24.10.png

キーボードの矩形とheight値
rect=(0.0, 713.0, 1024.0, 398.0)
height=398.0

どう見ても高さ398ポイントには見えません。
たぶん通常サイズのキーボードが画面外にはみ出しているんでしょうね。

なお外部キーボードはシミュレーターの場合、Shift+⌘+Kで切り替えられます。

解決策

画面の高さからCGRect.minYを引いた値を使うのが良さそうです。

修正例
height = UIScreen.main.bounds.height - value.cgRectValue.minY

終わりに

ダメな場合があったら教えてください。
最近はiPad ProのSmart Keyboardの登場により、この辺のテストも必須になりますね。。。

16
13
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
13