protected override bool OnSingleTap(MotionEvent e) { try { var pointer = e.GetPointer(0); var args = new TappedRoutedEventArgs(new Point(e.GetX(), e.GetY())) { OriginalSource = _target, PointerDeviceType = pointer.PointerDeviceType, CanBubbleNatively = true }; return(_target.RaiseEvent(UIElement.TappedEvent, args)); } catch (Exception ex) { Windows.UI.Xaml.Application.Current.RaiseRecoverableUnhandledExceptionOrLog(ex, this); return(false); } }
protected override UIGestureRecognizer CreateRecognizer(UIElement owner) { var recognizer = new UITapGestureRecognizer(OnGesture) { NumberOfTapsRequired = 2, }; recognizer.ShouldReceiveTouch += (_, touch) => (touch.View == owner); return(recognizer); void OnGesture(UITapGestureRecognizer r) { var doubleTappedArgs = new DoubleTappedRoutedEventArgs(r.LocationInView(owner)) { OriginalSource = owner, PointerDeviceType = PointerDeviceType.Touch }; owner.RaiseEvent(DoubleTappedEvent, doubleTappedArgs); } }
protected override UIGestureRecognizer CreateRecognizer(UIElement owner) { var recognizer = new UITapGestureRecognizer(OnGesture) { NumberOfTapsRequired = 1, }; recognizer.ShouldReceiveTouch += (_, touch) => true; return(recognizer); void OnGesture(UITapGestureRecognizer r) { var tappedArgs = new TappedRoutedEventArgs(r.LocationInView(owner)) { OriginalSource = owner, PointerDeviceType = PointerDeviceType.Touch }; owner.PreRaiseTapped?.Invoke(this, null); owner.RaiseEvent(TappedEvent, tappedArgs); } }