locked
WebBrowser上でのGestureイベントの挙動について RRS feed

  • 全般的な情報交換

  •  

    WebBrowserコンポーネント上でのGestureイベントの挙動について悩んでいます。

    例えば以下のコードの様に Grid にGestureListenerを追加してジェスチャーイベントを取得する場合、grid上に配置したRectangle 等のコンポーネント上でのタッチ操作でもFlickイベントやDragイベントが発生します。

    しかし、WebBrowser上でのタッチ操作によるイベントの発生はWP7のバージョンによって異なります。

    • Nodo デバイスでは WebBrowser 上でのタッチパネル操作でGestureイベントは発生しません
    • Mangoβ2デバイスではWebBrowser 上でのタッチパネル操作でGestureイベントが発生しました
    • Mango Build 7712 デバイスではWebBrowser 上でのタッチパネル操作でGestureイベントが発生したり、しなかったりします


    <Grid x:Name="grid1" Background="Blue" Height="700">
      <toolkit:GestureService.GestureListener >
          <toolkit:GestureListener Flick="ls_Flick"
      			DragCompleted="ls_DragCompleted"/>
        </toolkit:GestureService.GestureListener>
      <phone:WebBrowser HorizontalAlignment="Center" Name="webBrowser1" VerticalAlignment="Top" Width="400" Height="300" />
      <Rectangle Height="200" HorizontalAlignment="Center" Name="rectangle1" VerticalAlignment="Bottom" Width="380" Fill="Green" />
    </Grid>
    

    void ls_Flick(object sender, FlickGestureEventArgs e)
    {
      System.Diagnostics.Debug.WriteLine(sender.ToString() + "flick(" + e.HorizontalVelocity + "),(" + e.VerticalVelocity + ") "+e.Direction);
    }
    
    void ls_DragCompleted(object sender, DragCompletedGestureEventArgs e)
    {
      System.Diagnostics.Debug.WriteLine(sender.ToString() + "drag(" + e.HorizontalVelocity + "),(" + e.VerticalVelocity + ")");
    }
    
    

     

    Build 7712 デバイスで色々と試した結果、WebBrowser上でのFlickイベント自体は記録されていて、Grid上やRectangle上でGestureイベントが発生したときに、まとめて通知されます。

    また、Grid上をタッチしてそのままWebBrowserコンポーネント上まで指をスライドさせて離すと、それ以降WebBrowserコンポーネントでもGestureイベントが発生するようになります。

     

    WebBrowser上でのタッチ操作イベントはWMの時からバージョンによって異なっていたので、それはそれで良いと思うのですが、上記のようにユーザの操作で挙動が変わってしまったり、他の操作でまとめてイベント通知されるのはバグではないかと思っています。

    OS自体がまだまだβ段階なのでバグが残っているのもありえるかなと考えていますが、みなさんの意見をお聞かせ頂けないでしょうか?

     

     

     

    • 移動 Mike Wang (MSCS) 2012年10月2日 11:19 (移動元:Windows Phone 7 向けの開発)
    2011年7月31日 22:37

すべての返信

  • Toolkitを使ったジェスチャーですね。

    まず、現在のSilverlight Toolkit は Windows Phone SDK 7.1 Beta を正式サポートしておりません。もちろん、Mangoの環境に対しても同様です。Mango の環境に正式サポートしたものは現在開発中ですので今しばらくお待ちください。

    そして、この挙動については、OSやブラウザによるものではなく、Silverlight Toolkit の実相によるものです。問題があった場合は、Silverlight Toolkit のQ&Aで問い合わせることをお勧めします。

    http://silverlight.codeplex.com/workitem/list/basic

    Silverlight Toolkit はあくまでもオープンソースのライブラリであり、OSや開発環境の機能ではないことをご注意ください。

     


    マイクロソフト エバンジェリスト 高橋 忍
    2011年8月1日 2:54
  • Toolkit側の問題という事にはまったく頭がまわっていませんでした。ありがとうございます。

    >Silverlight Toolkit はあくまでもオープンソースのライブラリであり、OSや開発環境の機能ではないことをご注意ください。

    toolkitは便利でかつ間単に開発環境から使えてしまうので、ついOSや開発環境の一部と勘違いしていました
    toolkit側の実装の問題であれば、逆に同様な事を自分で実装することも出来る?いやtoolkitの対応を待ったほうが早いですね
    2011年8月1日 5:19
  • もちろん同様のことは実装することは作り方次第では可能なものもあるでしょう。

    (同様なこと、というのがどれを指しているのかわからないのではっきりとは言えませんが)

    たとえばフリックを取りたいのであれば、XNAのTouchapanel クラスを使って取得します。


    マイクロソフト エバンジェリスト 高橋 忍
    2011年8月1日 14:17
  • まさにフリックイベントが取りたかったのでTouchPanelクラスで実装する事が出来ました。

    ありがとうございました

     

     

    2011年8月2日 14:26