3

外部キーボードが接続されているかどうかを知る必要があります。私は、NSNotificationCenter を使用し、UIKeyboardDidShowNotification イベントを取得して、仮想キーボードが表示されたかどうかを判断することに精通しています。私が抱えている問題は、外部キーボードが接続されていて、テキスト フィールドをクリックすると、下部に「前へ」および「次へ」ボタンのある小さなビューが表示されることです。外部キーボードが接続されている場合でも、これが発生すると UIKeyboardDidShowNotification イベントが発生します。したがって、外部キーボードが接続されている場合でも、仮想キーボードが表示されているように見えます。

「前へ」ボタンと「次へ」ボタンが表示されないように、この小さなビューを無効にする方法はありますか? UIKeyboardDidShowNotification イベントが発生しないことを願っています。

そうしないと、NSNotificationCenter を信頼できる方法で使用して、キーボードが接続されているかどうかを判断することができないようです。キーボードが接続されているかどうかを検出するためにプライベート API を使用したくないのは確かです。

4

2 に答える 2

0

これが私が見つけることができる最良の解決策です....空白が残っている場合、回答の下のコメントにもそのための指示があります:仮想キーボードIOSから前の次のボタンを削除する方法

于 2013-01-09T16:32:52.393 に答える
0

ハードウェアの検出を行うために、通常のデバイスの動作をバイパスしようとしてはいけません。イベントが発生しないようにすることを忘れてください。代わりに、外部キーボードとオンスクリーン キーボードで起動したときの違いを見てください。

デバッグから、外付けキーボードが接続されているかどうかに関係なく、ビューのサイズがまったく変わらないことに気付きました。代わりに、キーボードの上部ツールバーのみが画面の境界内に描画されるように、ビューの原点が変更されます。

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

    NSDictionary *userInfo = [notification userInfo];
    CGRect kbRect = [[userInfo objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue];

    if(kbRect.origin.x != 0 || kbRect.origin.y != 0) {
        //external keyboard
    }
    else {
        //onscreen keyboard
    }
}

上記は機能するはずですが、いつでもアプリケーションをデバッグして、ニーズに合わせて「if」ステートメントを変更することができます。例えば、横置きしか許さないのでのチェックだけでいいkbRect.origin.xのですが、ゼロでないことをチェックする代わりに、デバッグで得た数字を使いました。

これは1年遅れだと思いますが、調査中にこの質問に出くわし、それでも良い答えに値すると考えました.

于 2014-02-08T00:03:29.127 に答える