2011-06-14 15 views
0

タッチイベントがフォーカスされている特定の2つのフィールドのうちの1つで処理される小さなブラックベリーアプリケーションに問題があります。ブラックベリーのイベント処理とフォーカスの問題

私の場合、2つの画像があり、1つは画面の最初の要素、もう1つは画面に追加された最後の要素です。両方ともBitmapFieldのサブクラスです。ユーザーがタップしたときにサイト(トラックパッド/ボールでクリックしたとき)。

問題は、ユーザーが画面上でどこをタップしているかにかかわらず、フォーカスが当てられていることです(EditField、別のカスタムボタン、またはバックグラウンドの一部)、フォーカスを持っているBitmapFieldはイベントを消費してWebブラウザを呼び出します。これは明らかにBB Torchシミュレータの問題で、BB OS 5.0のビルドです。 n回のクリックとタッチイベント。

また、Blackberry APIの(RIMで書かれていないような)イベント処理ガイドをどこで入手するかは参考になります。

UPDATE:私は試してみました

public boolean isFocusable() { 
     return false; 
    } 

しかし、理想的に私はこのような曲線や太字などのデバイス上で動作するようにこれをしたいと思います。

UPDATE 2: そこにフォーカスを受け取ることができるレイアウトマネージャの内部LabelFieldsのカップルが、彼らは、この問題は発生しませんBitmapFieldsがフォーカスを持っている場合、それだけで起こります。

答えて

3

Fieldからサブクラス化することで、カスタム画像ボタンフィールドを作成することをお勧めします。 paint(Graphics graphics)をオーバーライドして、画像とフォーカスされた境界(または背景)を描画します。次に、navigationClick(int status, int time)を上書きします。 BB UIフレームワークは、ユーザーがタッチスクリーン上のフィールドをクリックすると、そのメソッドを呼び出します。同様に、非タッチスクリーンデバイスでも動作します。大きなメリットとして、TouchEventであなた自身を気にする必要はありません。

+0

Worked great。ありがとう。 –

1

touchEvent()に触れている位置を確認してください。 BitmapFieldの範囲外の場合は、super.touchEvent(message)を返す必要があります。タッチがどこにあるかにかかわらず、フィールドにフォーカスがあるときは、フィールドにフォーカスが当てられてから、それを処理する必要があるかどうかが判断されます。

関連する問題