public void AddTouchMoveHandler(Xamarin.Forms.VisualElement xamarinVisual, EventHandler <TouchEventArgs> handler) { IVisualElementRenderer renderer = Platform.GetRenderer(xamarinVisual); Panel panel = renderer as Panel; panel.PointerMoved += this.Panel_PointerMoved; TouchEventsHelper helper = GetOrCreateTouchEventsHelper(panel); helper.touchMoveHandlers.Add(handler); }
private void Panel_PointerMoved(object sender, PointerRoutedEventArgs e) { UIElement uiElement = (UIElement)sender; PointerPoint pointer = e.GetCurrentPoint(uiElement); TouchEventsHelper helper = GetOrCreateTouchEventsHelper(uiElement); TouchEventArgs args = new TouchEventArgs(new Xamarin.Forms.Point(pointer.Position.X, pointer.Position.Y)); foreach (var handler in helper.touchMoveHandlers) { handler(null, args); } }
private static TouchEventsHelper GetOrCreateTouchEventsHelper(DependencyObject obj) { TouchEventsHelper helper = (TouchEventsHelper)obj.GetValue(TouchEventsHelperProperty); if (helper == null) { helper = new TouchEventsHelper(); obj.SetValue(TouchEventsHelperProperty, helper); } return(helper); }