2012-01-17 4 views
0

ジェスチャーを使って自分のhfmをスクロールしますが、このhfmをオーバーライドすると、画面上のすべてのフィールドがオーバーライドされます。どのように可能です、私はこの特定のtouchEventがhfmに属していると思いましたか?これを回避し、hfmのタッチスクロールを無効にするにはどうすればよいですか?Blackberry:マネージャのオーバーライドタッチイベントは、他のすべてのフィールドをオーバーライドします。

gallery = new CustomHFM(){ 



      protected void sublayout(int maxWidth, int maxHeight){ 
       super.sublayout(maxWidth, 200); 
       setExtent(maxWidth,200); 
      } 


      protected boolean touchEvent(TouchEvent message){ 

       int eventCode = message.getEvent(); 

       if(eventCode == TouchEvent.GESTURE){ 
        System.out.println("SWIPE GESTURE"); 
        TouchGesture g = message.getGesture(); 
        int gesturecode = g.getEvent(); 
        int direction = g.getSwipeDirection(); 

         //gallery.setHorizontalScroll(page_two, true); 
        if(direction == TouchGesture.SWIPE_WEST) 
         slideNext(); 

        if(direction == TouchGesture.SWIPE_EAST) 
         slidePrev(); 

        pressed = true; 
       } 

       if(eventCode == TouchEvent.UP){ 
       pressed = false; 

       //slide(); 
       } 


       return true; 
      } 
     }; 
+0

SWIPE_WESTとEASTの下でtrueを返し、super.touchEvent(メッセージ)を受け取っても動作しない – Adam

答えて

1

あなたは管理者がイベントを消費し、それが階層下の任意の更を伝播べきではない場合にのみ、touchEvent-methodからtrueを返す必要があります。おそらく、処理する前にsuper.touchEventも呼び出すべきでしょうが、これについてはわかりません。

+0

マネージャがイベントをいつ消費するかは、どのように知ることができますか?一時的な修正として、私はx y posがマネージャの位置にあるときだけtrueを返しますが、画面がダイナミックで、マネージャがスクロールして別の位置にある場合は、この方法は機能しません – Adam

+0

それはあなたの決定次第です。通常、何らかのイベントのためにアクションを実行する場合、UIの他の部分がそのイベントに応答しないようにするため、イベントを消費したことをシステムに通知します。 – esaj

+0

@AdamどのようにslideNextとslidePrevメソッドを実装できますか?いくつかのコードスニペットを共有してください。 – SB24

関連する問題