web-dev-qa-db-ja.com

iPhoneのスクリーンキーボードの高さは?

ポイント単位で測定されたポートレートの高さとランドスケープの高さ。

82
Erik B

キーボードの高さは、ポートレートモードで216pts、ランドスケープモードで162ptsです。

ソース

34
Erik B

IOS 7.1でキーボードのフレームを決定するには、次のアプローチを使用しました。

View Controllerのinitメソッドで、UIKeyboardDidShowNotificationに登録しました:

NSNotificationCenter *center = [NSNotificationCenter defaultCenter];
[center addObserver:self selector:@selector(keyboardOnScreen:) name:UIKeyboardDidShowNotification object:nil];

次に、keyboardOnScreen:で次のコードを使用して、キーボードのフレームにアクセスしました。このコードは、通知からuserInfo辞書を取得し、NSValueに関連付けられたUIKeyboardFrameEndUserInfoKeyにアクセスします。その後、CGRectにアクセスして、View Controllerのビューの座標に変換できます。そこから、そのフレームに基づいて必要な計算を実行できます。

-(void)keyboardOnScreen:(NSNotification *)notification 
 {
        NSDictionary *info  = notification.userInfo;
        NSValue      *value = info[UIKeyboardFrameEndUserInfoKey];

        CGRect rawFrame      = [value CGRectValue];
        CGRect keyboardFrame = [self.view convertRect:rawFrame fromView:nil];

        NSLog(@"keyboardFrame: %@", NSStringFromCGRect(keyboardFrame));
 }

スイフト

そして、Swiftでの同等の実装:

NotificationCenter.default.addObserver(self, selector: #selector(keyboardDidShow), name: UIResponder.keyboardDidShowNotification, object: nil)


@objc
func keyboardDidShow(notification: Notification) {
    guard let info = notification.userInfo else { return }
    guard let frameInfo = info[UIResponder.keyboardFrameEndUserInfoKey] as? NSValue else { return }
    let keyboardFrame = frameInfo.cgRectValue
    print("keyboardFrame: \(keyboardFrame)")
}
210
Ken Anderson

IOS 8では、スクリーンキーボードのサイズcanが異なることに注意してください。オンスクリーンキーボードが常に表示される(specific heightで)または非表示になると想定しないでください。

現在、iOS 8では、ユーザーはテキスト予測領域のオン/オフを切り替えることもできます...これを行うと、アプリのkeyboardWillShowイベントagainが開始されます。

このwillは、多くのレガシーコードサンプルを破壊します。これは、スクリーンキーボードの現在の高さを測定するだけのkeyboardWillShowイベントを記述し、この(絶対的な)量。

enter image description here

つまり、keyboardWillShowイベントを追加してキーボードの高さを測定し、この量だけコントロールの高さを変更するよう指示するサンプルコードが表示された場合、これは常に機能しなくなります。

上記の例では、次のサイトのサンプルコードを使用しました。これは、垂直制約constant値をアニメーション化します。

自動レイアウトの練習

私のアプリでは、画面の下部に設定されたUITextViewに制約を追加しました。画面が最初に表示されたとき、この最初の垂直距離を保存しました。

その後、私のkeyboardWillShowイベントが開始されるたびに、この新しい制約値に(新しい)キーボードの高さをaddします(つまりconstraintはコントロールの高さ)。

enter image description here

うん。それは醜いです。

そして、XCode 6のひどく痛みを伴うAutoLayoutでは、コントロールの下部を画面の下部または画面上のキーボードの上部に取り付けることができないだけで、少しイライラ/驚いています。

おそらく私は何かが欠けています。

私の正気以外。

46
Mike Gledhill

バージョンノート:これは、カスタムキーボードサイズをサポートするため、iOS 9および10ではもはや値ではありません。

これは、モデルとQuickTypeバーに依存します。

enter image description here

http://www.idev101.com/code/User_Interface/sizes.html

16
Philipp Sander

キーボードの高さは、モデル、QuickTypeバー、ユーザー設定に依存します...最良のアプローチは、動的に計算することです:

Swift 3.

    var heightKeyboard : CGFloat?

    override func viewWillAppear(_ animated: Bool) {
            super.viewWillAppear(animated)
            NotificationCenter.default.addObserver(self, selector: #selector(self.keyboardShown(notification:)), name: NSNotification.Name.UIKeyboardDidShow, object: nil)
    }

    func keyboardShown(notification: NSNotification) {
           if let infoKey  = notification.userInfo?[UIKeyboardFrameEndUserInfoKey],
               let rawFrame = (infoKey as AnyObject).cgRectValue {
               let keyboardFrame = view.convert(rawFrame, from: nil)
               self.heightKeyboard = keyboardFrame.size.height
               // Now is stored in your heightKeyboard variable
           }
    }
10
torcelly

最新の答えが見つからないので、シミュレータですべて確認します。(iOS 11.0)


デバイス|スクリーンの高さ|ポートレート|風景

iPhone 4s | 480.0 | 216.0 | 162.0

iPhone 5、iPhone 5s、iPhone SE | 568.0 | 216.0 | 162.0

iPhone 6、iPhone 6s、iPhone 7、iPhone 8、iPhone X | 667.0 | 216.0 | 162.0

iPhone 6プラス、iPhone 7プラス、iPhone 8プラス| 736.0 | 226.0 | 162.0

iPad第5世代、iPad Air、iPad Air 2、iPad Pro 9.7、iPad Pro 10.5、iPad Pro 12.9 | 1024.0 | 265.0 | 353.0


ありがとう!

6
Seungyoun Yi

iPhone

キーボードサイズ:

  1. 5S、SE、5、5C(320×568)keyboardSize =(0.0、352.0、320.0、216.0)keyboardSize =(0.0、315.0、320.0、253.0)

2.6S、6,7,8:(375×667):keyboardSize =(0.0、407.0、375.0、260。

3.6 +、6S +、7 +、8 +:(414×736)keyboardSize =(0.0、465.0、414.0、271.0)

4.XS、X:(375 X 812)keyboardSize =(0.0、477.0、375.0、335.0)

5.XR、XSMAX((414 x 896)keyboardSize =(0.0、550.0、414.0、346.0)

0
Tejaswini