2016-04-10 19 views
6

私はスクロールビューを含む非常に単純なXamarinフォームアプリケーションを持っていて、内部はスタックレイアウトです。マウスが動作しているときにXamarinのスクロールビューをドラッグできない理由

Windowsに展開すると、マウスが正しく動作し、スクロールバーがスクロールバーでスクロールされます。ただし、同じコントロールをスクロールするためには、タッチ/ドラッグはまったく機能しません。タッチ/ドラッグでスクロールできるように特別な操作を行う必要がありますか?私はこれがうまくいくと思った。

どこでトラブルシューティングを開始するかわかりません。

私はWindows 10をターゲットにしています。この時点では、他のプラットフォームはオプションです。

私が持っているUIクラスの構造はこれです:

ContentPage.Content = StackLayout1 
StackLayout1.Children = { StackLayout2, Scrollview } 
StackLayout2 contains an entry field and two buttons 
ScrollView, which is the problem, contains another StackLayout 
Inside that I have some labels and some grids 

後は、簡略化REPROです。私の(タッチ可能な)devマシン上でアンドロイドエミュレータで動作し、Windows 8.1エミュレータで実行されているタッチ操作でスクロールし、スクロールはマウスでのみ動作し、タッチでは動作しません。

public App() { 

     StackLayout sl = new StackLayout(); 

     for (int i = 1; i < 20; i++) { 
      sl.Children.Add(new Label { Text = "Label1", FontSize = 50, HeightRequest = 100 }); 
     } 

     ScrollView sv = new ScrollView { VerticalOptions = LayoutOptions.FillAndExpand }; 

     sv.Content = sl; 

     ContentPage cp = new ContentPage(); 
     cp.Content = sv; 

     MainPage = cp; 


    } 

Xamarinは、Surfaceや他のWindowsタブレットのように、タッチのあるWindowsデバイスを処理しませんか?または?

+0

これはどのプラットフォームで起こっているのですか? Xamarin Formsがサポートされているすべてのプラットフォームで起こっていますか? –

+0

はい - Windows 10 – onupdatecascade

+0

Windows 10デスクトップと同じですか? Windows 10のデスクトップには、通常のPCの場合はタッチジェスチャーはありません。トラックパッドのジェスチャー(ノートパソコンを使用していることを前提としています)のような操作をしなければなりません。それ以外の場合、Win10デスクトップはWin10 Phoneのように動作しません。 –

答えて

0

解決策は、VS 2015テンプレートに付属のXamarin v2.0.0.6482をv2.1.0.6529に更新することです。この問題のため、更新は少し痛みですhttps://bugzilla.xamarin.com/show_bug.cgi?id=39721。いったん私はそれをインストールしたスクロールは、他の変更なしで作業を開始しました。

スクロールはXamarinフォーラムの開発者によって検証された古いバージョンのWindowsでは壊れています。

1

あるActivityからオーバーライドされたメソッドがあります:public boolean onTouchEvent(MotionEvent event)

これは、画面全体からすべてのタッチイベントを解釈する一般的な方法ですが。

あなたが知っているすべてのViewは独自の実装を追加するために実装することができる独自のonTouchEvent()メソッドを持っています。これらのタッチイベントは "内部"要素から "外部"要素に移動するようです。私は親子関係を意味します。

したがって、タッチイベントが水平の場合はtrueを返します。アクティビティのタッチイベントは、ScrollViewタッチイベントが単独で処理されていない場合にのみ処理されます。それ以外の場合は、スクロールビューのon touchイベントをオーバーライドして実装する必要があります。場合によっては、レイアウト全体を実装するためにfalseを返す必要があります。

+0

AndroidプロジェクトではonTouchEvent()しか見つかりません。 Windows 8.1プロジェクトには同じものがあると予想されますか?私はXamarin.Formsでそれを見ていない(多分私はあなたの提案を理解していない)。 – onupdatecascade

関連する問題