2011-07-30 17 views
0

私はバーチャルキーボードのタイミングを含む小さなお子さんのゲームに取り組んでいます。バーチャルキーボードのキー押下を検出する

仮想キーボードのキーが押されたことを検出できますか?私。タッチ通知(touchesBegan)を取得しますか?私は、どのキーが押されたか、プレスアクションが開始されたかどうかを知る必要はありません。

答えて

0

タッチイベントを仮想キーボードから直接取得することはできません。ただし、UITextFieldを使用すると、画面が非表示になるので、キーボードを表示するにはbecomeFirstResponderを呼び出してください。次に、Khomsanが示唆するように、デリートメソッドtextView:shouldChangeTextInRange:を実装して、キーが押されるたびに通知を受けることができます。

UIKeyInputプロトコルを実装しているカスタムUIControlを書くことがより洗練された可能性があります。 insertText:deleteBackwardhasTextの実装を提供するだけで済みます(これは、常にYESを返すだけです)。キーボードを見えるようにするには、カスタムコントロールのためにbecomeFirstResponderに再度電話する必要があります。

どちらの方法でもキーがは(ようにテキストが入力されます)にリリースされたときにのみ通知されます、ないタッチが実際に始まるときという点で共通しています。私が言ったように、tochesBeganイベントを直接取得することはできません。必要な場合は、おそらく自分のオンスクリーンキーボードを実装する必要があります。

+0

ありがとうございます。それは可能ではないという私の疑惑を(カスタムキーボードなしで)確認します。私はすでにキーを押した場合の解決策(textView:shouldChangeTextInRange :)を持っています。 透明なビューをキーボードの上に置くことは可能でしょうか、それとも試してみるのは時間の無駄でしょうか? – peterparnes

+0

キーボードが独自のウィンドウを持っているので、通常のビュー階層のビューは常にその下にあるように、これは可能ですが、別の 'UIWindow'を作成する必要があります。 – omz

+0

ありがとうございました!答えをよろしく! – peterparnes

-3

はいあなただけ使用することができます:あなたが使用できるのTextViewの場合

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{ 
    //do what you need 
    [super touchesBegan:touches withEvent:event]; 
} 
+0

これらのイベントをUITextViewから取得するには、他に何を追加する必要がありますか? – peterparnes

+0

これは、仮想キーボードではなく、自分の視点でタッチを検出するだけです。 – omz

+0

あなたはそれをどこに置くつもりです。 – Cyprian

1

...

あなたが使用することができTextFieldに
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text 
- (void)textViewDidChange:(UITextView *)textView 

...

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string 

を参照してくださいUITextViewDelegateとAppleのウェブサイトのUITextFieldDelegate。

関連する問題