public SubscribeTableSource(UIView view) { _tableCells = new Dictionary <string, UITableViewCell>(); _bindings = new List <Binding>(); _tapGestureRecognizer = new UIGestureRecognizer(); _tapGestureRecognizer.AddTarget(() => view.EndEditing(true)); }
protected override void OnElementChanged(ElementChangedEventArgs <Xamarin.Forms.Button> e) { base.OnElementChanged(e); Control.UserInteractionEnabled = true; UIGestureRecognizer touch = new UIGestureRecognizer(); touch.AddTarget(() => HandleTouch(touch)); Control.AddGestureRecognizer(touch); }
public void NoStrongCycles() { bool finalizedAnyCtor = false; bool finalizedAnyAddTarget1 = false; bool finalizedAnyAddTarget2 = false; // Add the gesture recognizers to a list so that they're not collected until after the test // This is to avoid false positives (the callback should be collectible already after disposing the gesture recognizer). var list = new List <UIGestureRecognizer> (); var pool = new NSAutoreleasePool(); for (var k = 0; k < 10; k++) { { var notifier = new FinalizerNotifier(() => finalizedAnyCtor = true); using (var gr = new UIGestureRecognizer(() => { GC.KeepAlive(notifier); // Make sure the 'notifier' instance is only collected if the delegate to UIGestureRecognizer is collectable. })) { list.Add(gr); } } { var notifier = new FinalizerNotifier(() => finalizedAnyAddTarget1 = true); using (var gr = new UIGestureRecognizer()) { gr.AddTarget(() => { GC.KeepAlive(notifier); }); list.Add(gr); } } { var notifier = new FinalizerNotifier(() => finalizedAnyAddTarget2 = true); using (var gr = new UIGestureRecognizer()) { gr.AddTarget((obj) => { GC.KeepAlive(notifier); }); list.Add(gr); } } } pool.Dispose(); TestRuntime.RunAsync(DateTime.Now.AddSeconds(1), () => { GC.Collect(); }, () => finalizedAnyCtor && finalizedAnyAddTarget1 && finalizedAnyAddTarget2); Assert.IsTrue(finalizedAnyCtor, "Any finalized"); Assert.IsTrue(finalizedAnyAddTarget1, "AddTarget1 finalized"); Assert.IsTrue(finalizedAnyAddTarget2, "AddTarget2 finalized"); GC.KeepAlive(list); }
public PieRadarChartGesture() { tapGesture = new UITapGestureRecognizer(); touchGesture = new TouchGesture(this); tapToken = tapGesture.AddTarget(HandleTap); }