private void InvokeTapEvent(Xamarin.Forms.View view, Xamarin.Forms.TapGestureRecognizer tgr, UIView uiView, UITapGestureRecognizer nativeTgr) { if (tgr.Command != null) { if (tgr.Command.CanExecute(tgr.CommandParameter)) { tgr.Command.Execute(tgr.CommandParameter); } } else { InvkokeEvent(tgr, "Tapped", view, EventArgs.Empty); } }
protected override void OnElementChanged(Xamarin.Forms.Platform.iOS.ElementChangedEventArgs <Cross2DView> e) { base.OnElementChanged(e); if (nativeView == null) { nativeView = new NativeView(); SetNativeControl(nativeView); context = new Context(nativeView, 1.0f /*(float)UIScreen.MainScreen.Scale*/); } if (e.OldElement != null) { nativeView.DrawView -= OnDrawView; e.OldElement.DeletedInternal(); } if (e.NewElement != null) { nativeView.DrawView += OnDrawView; e.NewElement.CreatedInternal(this); foreach (var gr in e.NewElement.GestureRecognizers) { if (gr is Xamarin.Forms.TapGestureRecognizer) { Xamarin.Forms.TapGestureRecognizer tgr = gr as Xamarin.Forms.TapGestureRecognizer; nativeView.AddGestureRecognizer(new UITapGestureRecognizer(g => { InvokeTapEvent(e.NewElement, tgr, Control, g); }) { NumberOfTapsRequired = (nuint)tgr.NumberOfTapsRequired }); } else if (gr is Xamarin.Forms.PinchGestureRecognizer) { Xamarin.Forms.PinchGestureRecognizer pgr = gr as Xamarin.Forms.PinchGestureRecognizer; nativeView.AddGestureRecognizer(new UIPinchGestureRecognizer(g => { InvkokeEvent(pgr, "PinchUpdated", e.NewElement, CreatePinchEventArgs(Control, g)); })); } } } }