2
votes

I am creating an app that allows the user to drag and drop to put one image on top of another using Xamarin.Forms.

On iOS I managed to hack together a workable gesture recognizer renderer by creating a custom ContentView and a custom renderer for it, which then attaches native gesture recognizers to itself based on the GestureRecognizers elements. To do that I disable the default EventTracker and implement my own, with overridden GetNativeRecognizer method

in the custom renderer:

public InteractiveContentViewRenderer () : base ()
{ 
  AutoTrack = false; 
  events = new InteractiveEventTracker (this); 
}

in the custom event tracker:

public InteractiveEventTracker (IVisualElementRenderer renderer) : base (renderer)
{
    this.Renderer = renderer; 
}

protected override MonoTouch.UIKit.UIGestureRecognizer GetNativeRecognizer (Xamarin.Forms.IGestureRecognizer recognizer)
{
    var gestureRecognizer = base.GetNativeRecognizer (recognizer);

    if (gestureRecognizer == null) {
// here I find my own native recognizer and return it
    }
}

On Android, however, so far I haven't figured out how to achieve the same thing. There's no EventTracker in Android, I think I'll have to implement some Android View for this to work but I haven't figured it out so far.

Has anyone managed to hack together touch events in Xamarin.Forms for Android? I'd like to know at least the basic structure of the hack?

1

1 Answers