web-dev-qa-db-ja.com

iPadのスクリーンキーボードの高さはどのくらいですか?

ここでは、縦の高さと横の高さの2つの数値を探しています。 cmやインチではなく、ピクセルで答えてください。

50
Erik B

ポートレートの高さは264で、ランドスケープの高さは352です。

私はこれが遅い答えであることを知っていますが、私はこの質問に自分で出会いました。

118
thelaws
- (void) keyboardWasShown:(NSNotification *)nsNotification {
    NSDictionary *userInfo = [nsNotification userInfo];
    CGSize kbSize = [[userInfo objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size;

    NSLog(@"Height: %f Width: %f", kbSize.height, kbSize.width);
    // Portrait:    Height: 264.000000  Width: 768.000000
    // Landscape:   Height: 352.000000  Width: 1024.000000
}
55
user629328

答えは依存です。

キーボードの高さは16種類あり、任意の位置に配置できます。

以下の点で異なります:

  1. 風景写真、
  2. webview/non-webview、
  3. アジアのキャラクター選択スタイル、通常の言語
  4. 分割キーボード/非分割

いくつかの異なる可能な構成を示す画像を添付しました。

sample ipad keyboard configurations

16個すべての可能性を列挙するのではなく、UIKeyboardWillShowNotification/UIKeyboardWillHideNotificationおよびUIKeyboardDidChangeFrameNotification(iOS 5.0以降)を観察し、それらのイベントからキーボードのフレームを取得したいと思います。

28
jcampbell1

IPadでは、キーボードのサイズは言語にも依存します(たとえば、日本語キーボードのほうが背が高い)。プログラムで照会するもう1つの理由。

17
Kris Van Bael

キーボードの高さは、UIWindowクラス( リファレンスガイドリンク で提供されるように、キーボード通知の表示/非表示のwill/didによって返されるuserInfo辞書から取得できます。 =)。次の利点があるため、これはハードコーディングよりもはるかに優れた高さを取得する方法です。

  • デバイスの独立性(iPhone/iPodまたはiPad)
  • 解像度非依存(iPhone 3G画面/網膜ディスプレイ/ iPadディスプレイ/将来のディスプレイ)。
  • キーボードの種類/スタイルに依存しない(画面上のキーボードによってサイズが異なる場合があります)。

実際、正確な数を与えるこの質問に対する答えは、この辞書内で返された結果を見ることでこの数を得た可能性が高いです!

6
James Bedford

私はこのページのいくつかの答えを危険なほど誤解させているのでdownに投票しました。

確かに、iOS 8では、ハードコーディングされたキーボードの高さをcannot使用できません。

理由を説明するために、iPhoneで実行する私のアプリを次に示します。

ルーラーをつかんで、スクリーンキーボードの高さを教えてください。

enter image description here

ああ...あなたはそれをすることはできません、できますか?

ユーザーがオンスクリーンキーボードの上部にある自動入力バーをオンにすると、高さが変わる可能性があります(ちなみに、2番目の "keyboardWillShow"イベントがトリガーされます)。

IPadのオンスクリーンキーボードについても同じことが言えます。

一番下の行:ごめんなさい、あなたはmustkeyboardWillShowイベントでキーボードの高さを測定する必要があります。

そうしないと、問題が発生します。

- (void)keyboardWillShow:(NSNotification *)notification {

    NSDictionary *info = [notification userInfo];
    NSValue *kbFrame = [info objectForKey:UIKeyboardFrameEndUserInfoKey];
    CGRect keyboardFrame = [kbFrame CGRectValue];
    keyboardFrame = [self.view convertRect:keyboardFrame fromView:nil];

    CGFloat heightOfKeyboard = keyboardFrame.size.height;

    NSLog(@"The keyboard is now %d pixels high.", (int)heightOfKeyboard);

}

ところで、上記のコードのconvertRectの呼び出しを忘れないでください。

それがなければ、iOS 8を搭載した横長のiPadで、キーボードの高さが1024ピクセルであると報告されることがありました。

もう1つ...

今日、私は書いたカスタムコントロールに取り組んでいた。これはiPhone/iPadの画面の下部に表示され、画面上のキーボードの高さを考慮していないことに気付いた。

この小さなコントロールは汎用であり、どの画面からでも呼び出すことができるため、keyboardWillShow/Hide通知を追加したくありませんでした。

オンスクリーンキーボードの高さを見つけるための私のソリューションは、現在表示されている場合、無料のSVProgressHUDコントロールから優れたvisibleKeyboardHeight関数を使用することでした。

そのコントロールalsoもオンスクリーンキーボードの高さを必要としたため、通知メッセージUIViewsは垂直方向の中央に表示されます。

それは御worked走を働いた...だから、もしあなたがdoキーボードの高さをつかむための手っ取り早い方法が必要なら、このコードのコピーをつかんで、SVProgressHUD.mファイル。

GitHubからSVProgressHUDをダウンロード

5
Mike Gledhill
3
Dominic

IOS 7では、iPadの場合、Landscapeでは402、Portraitでは314です。

2
Max

高さ:PORTRAIT = 264 LANDSCAPE = 352

1
bornbnid

私はそれが何であるかわかりませんが、あなたはそれを十分に簡単に理解することができます。

IPadでこのページを閲覧する...

JavaScript

var totalHeight = window.innerHeight;
document.getElementById('what-is-my-height').onclick = function() {
  alert(totalHeight - window.innerHeight); 
};

HTML

<button id="what-is-my-height">Bring up keyboard, then Push me</button>

(画面キーボードを表示した後)ボタンをクリックすると、高さが表示されます。他の方向についても繰り返します。

1
alex

IOS 7では、横モードで高さと幅が入れ替わらないという問題がありましたが、この問題はiOS 8で修正されました。

そのため、iOS7またはiOS8の高さを常に返すコードの一部を以下に示します。これにより、コードのバージョン固有のチェックが不要になります。

- (void)keyboardWasShown:(NSNotification*)aNotification
{
    NSDictionary* info = [aNotification userInfo];
    CGSize kbSize = [[info objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size;
    //Always gives the height as the height is of smaller dimension
    CGFloat height = (kbSize.height>kbSize.width)?kbSize.width:kbSize.height;
}
1
Swaroop S

他の回答で解決されるよりも多くの問題があると思います。たとえば、このキーボードで終わることができます:

enter image description here

これは、iOS 9のiPadキーボードで「非表示」ボタンをクリックすると発生します。このキーボードは、Mike Gledhill answerからの通知情報にfullサイズのままです。 (UIKeyboardFrameEndUserInfoKeyキーボードの高さは300を超えています)。

正しい値を得るために、デバイスの高さからキーボードのy軸の原点を引く必要がありました。

- (void)keyboardWillShow:(NSNotification *)notification
    NSDictionary *info = [aNotification userInfo];
    CGRect keyboardFrame = [info[UIKeyboardFrameBeginUserInfoKey] CGRectValue];

    keyboardFrame = [info[UIKeyboardFrameEndUserInfoKey] CGRectValue];
    keyboardFrame = [self.view convertRect:keyboardFrame fromView:nil];
    CGFloat yPosition = keyboardFrame.Origin.y;

    NSInteger height = [UIScreen mainScreen].bounds.size.height - yPosition;
 }   

両方の向きのiPhoneとiPadを搭載したiOS9で動作します。

0
kraag22