私はバーチャルキーボードのタイミングを含む小さなお子さんのゲームに取り組んでいます。バーチャルキーボードのキー押下を検出する
仮想キーボードのキーが押されたことを検出できますか?私。タッチ通知(touchesBegan)を取得しますか?私は、どのキーが押されたか、プレスアクションが開始されたかどうかを知る必要はありません。
私はバーチャルキーボードのタイミングを含む小さなお子さんのゲームに取り組んでいます。バーチャルキーボードのキー押下を検出する
仮想キーボードのキーが押されたことを検出できますか?私。タッチ通知(touchesBegan)を取得しますか?私は、どのキーが押されたか、プレスアクションが開始されたかどうかを知る必要はありません。
タッチイベントを仮想キーボードから直接取得することはできません。ただし、UITextField
を使用すると、画面が非表示になるので、キーボードを表示するにはbecomeFirstResponder
を呼び出してください。次に、Khomsanが示唆するように、デリートメソッドtextView:shouldChangeTextInRange:
を実装して、キーが押されるたびに通知を受けることができます。
UIKeyInput
プロトコルを実装しているカスタムUIControl
を書くことがより洗練された可能性があります。 insertText:
、deleteBackward
、hasText
の実装を提供するだけで済みます(これは、常にYES
を返すだけです)。キーボードを見えるようにするには、カスタムコントロールのためにbecomeFirstResponder
に再度電話する必要があります。
どちらの方法でもキーがは(ようにテキストが入力されます)にリリースされたときにのみ通知されます、ないタッチが実際に始まるときという点で共通しています。私が言ったように、tochesBegan
イベントを直接取得することはできません。必要な場合は、おそらく自分のオンスクリーンキーボードを実装する必要があります。
はいあなただけ使用することができます:あなたが使用できるのTextViewの場合
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
//do what you need
[super touchesBegan:touches withEvent:event];
}
これらのイベントをUITextViewから取得するには、他に何を追加する必要がありますか? – peterparnes
これは、仮想キーボードではなく、自分の視点でタッチを検出するだけです。 – omz
あなたはそれをどこに置くつもりです。 – Cyprian
...
あなたが使用することができ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。
ありがとうございます。それは可能ではないという私の疑惑を(カスタムキーボードなしで)確認します。私はすでにキーを押した場合の解決策(textView:shouldChangeTextInRange :)を持っています。 透明なビューをキーボードの上に置くことは可能でしょうか、それとも試してみるのは時間の無駄でしょうか? – peterparnes
キーボードが独自のウィンドウを持っているので、通常のビュー階層のビューは常にその下にあるように、これは可能ですが、別の 'UIWindow'を作成する必要があります。 – omz
ありがとうございました!答えをよろしく! – peterparnes