2016-04-10 20 views
6

Ho una semplice app per moduli Xamarin che contiene una scrollview e al suo interno una sovrapposizione.Perché il trascinamento di una scrollview Xamarin non funziona quando il mouse funziona

Se distribuito su Windows, il mouse funziona correttamente per scorrere la scrollview con una barra di scorrimento. Tuttavia, toccare/trascinare non funziona affatto per scorrere lo stesso controllo. Devo fare qualcosa di speciale per abilitare il tocco/trascinamento per scorrere? Ho pensato che avrebbe funzionato.

Non sono sicuro nemmeno da dove iniziare la risoluzione dei problemi.

Sono destinato a Windows 10. Altre piattaforme opzionali a questo punto.

La struttura delle classi UI ho è questo:

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 

Segue una repro semplificato. Eseguendo l'emulatore di Android sul mio (tocco capace) lo scorrimento della macchina dev con il tocco funziona, l'esecuzione nell'emulatore di Windows 8.1, lo scorrimento funziona solo con un mouse, non con il tatto.

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 non gestisce i dispositivi Windows con touch, come Surface o altri tablet Windows? O?

+0

Puoi per favore aggiungere su quali piattaforme sta succedendo? Succede su tutte le piattaforme su cui è supportato Xamarin Forms? –

+0

Sì signore - Windows 10 – onupdatecascade

+0

Come in Windows 10 Desktop? Un desktop di Windows 10 non avrà i gesti tattili disponibili se si tratta di un normale PC. Dovresti fare qualcosa come i gesti del trackpad (supponendo che tu sia su un laptop) per simularlo da vicino. Altrimenti il ​​desktop Win10 non funzionerà come Win10 Phone. –

risposta

0

La soluzione è aggiornare Xamarin v2.0.0.6482, fornito con il modello VS 2015, alla v2.1.0.6529. L'aggiornamento è un po 'un problema a causa di questo problema https://bugzilla.xamarin.com/show_bug.cgi?id=39721. Una volta ottenuto lo scorrimento installato ho iniziato a lavorare senza altre modifiche.

Lo scorrimento è interrotto nella versione precedente, su Windows, verificato da un dev sui forum Xamarin.

1

C'è un metodo sovresposta da Activity che è: public boolean onTouchEvent(MotionEvent event)

Questo è il metodo generale che interpreta tutti gli eventi di tocco del tutto lo schermo.

Come conoscere ogni View ha il proprio onTouchEvent() metodo che si potrebbe implementare al fine di aggiungere un po 'personalizzato implementation.It sembra che questi tocco eventi vanno dagli elementi "dentro" agli elementi "esterni". Intendo relazioni genitore-figlio.

Quindi nel nostro caso, lo ScrollView restituisce true quando gli eventi di tocco sono orizzontali. L'evento di tocco dell'attività verrà gestito solo se l'evento di tocco ScrollView non viene gestito da solo, quindi si sta bene. In caso contrario, è necessario eseguire l'override e implementare l'evento on touch della vista di scorrimento e in alcuni casi è necessario restituire false, così come per l'intero layout per implementarlo.

+0

Posso trovare solo onTouchEvent() nel progetto Android. I progetti di Windows 8.1 dovrebbero avere lo stesso?Non lo vedo in Xamarin.Forms (forse non sto capendo il tuo suggerimento). – onupdatecascade