public override void TouchesEnded(NSSet touches, UIEvent evt) { if (string.IsNullOrEmpty(_disabled) && !_confirmed) { var point = (touches.AnyObject as UITouch).LocationInView(this.Superview); if (!Frame.Contains(point)) { Lighten(); base.TouchesCancelled(touches, evt); } else if (Selected) { Lighten(); _confirmed = true; _cancelOverlay.RemoveFromSuperview(); _cancelOverlay = null; base.TouchesEnded(touches, evt); } else { Lighten(); Selected = true; _cancelOverlay = UIButton.FromType(UIButtonType.Custom); _cancelOverlay.Frame = new RectangleF(0, 0, 1024, 1024); _cancelOverlay.AddTarget(delegate { Cancel(); }, UIControlEvent.TouchDown); Superview.AddSubview(_cancelOverlay); Superview.BringSubviewToFront(this); } } }
public void TrackingStarted(object sender, TrackingEventArgs e) { var button = (ButtonView)sender; UIGraphics.BeginImageContext(button.Bounds.Size); button.Layer.RenderInContext(UIGraphics.GetCurrentContext()); UIImage image = UIGraphics.GetImageFromCurrentImageContext(); UIGraphics.EndImageContext(); if (trackingImageView == null) { trackingImageView = new UIImageView(CGRect.Empty); Superview.AddSubview(trackingImageView); trackingImageView.Alpha = 0.5f; } trackingImageView.Image = image; trackingImageView.SizeToFit(); CGRect frame = trackingImageView.Frame; var newFrame = new CGRect(Superview.ConvertPointFromView(button.Frame.Location, this), frame.Size); trackingImageView.Frame = newFrame; if (ButtonSelectedEvent != null) { ButtonSelectedEvent(button); } }
private void initialize() { //Make new tableview and do some settings AutoCompleteTableView = new UITableView(); AutoCompleteTableView.Layer.CornerRadius = 5; //rounded corners AutoCompleteTableView.ContentInset = UIEdgeInsets.Zero; AutoCompleteTableView.AutoresizingMask = UIViewAutoresizing.FlexibleWidth | UIViewAutoresizing.FlexibleHeight; //for resizing (switching from table to portait for example) AutoCompleteTableView.Bounces = false; AutoCompleteTableView.BackgroundColor = UIColor.Clear; AutoCompleteTableView.TranslatesAutoresizingMaskIntoConstraints = false; AutoCompleteTableView.Source = this.AutoCompleteViewSource; AutoCompleteTableView.TableFooterView = new UIView(); AutoCompleteTableView.Hidden = true; //Some textfield settings this.TranslatesAutoresizingMaskIntoConstraints = false; this.Delegate = this; this.AutocorrectionType = UITextAutocorrectionType.No; this.ClearButtonMode = UITextFieldViewMode.WhileEditing; var isTableViewController = _parentTableViewController ?? (_parentViewController as UITableViewController); //if parent is tableviewcontroller if (isTableViewController != null) { _parentIsUITableViewController = true; if (_parentTableViewController == null) { _parentTableViewController = isTableViewController; } _parentTableViewBounces = _parentTableViewController.TableView.Bounces; _parentTableViewAllowsSelection = _parentTableViewController.TableView.AllowsSelection; //Add the view to the contentview of the cell Superview.AddSubview(AutoCompleteTableView); UITableViewCell cell = Superview.Superview as UIKit.UITableViewCell; //Get indexpath to set the constraint to the right cell NSIndexPath indexPath = _parentTableViewController.TableView.IndexPathForCell(cell); if (indexPath == null) { Console.WriteLine("Should be initialized in the ViewDidAppear and not in the ViewDidLoad!"); return; } //add constraints Superview.AddConstraints( AutoCompleteTableView.WithSameCenterY(this).Plus((AutocompleteTableViewHeight / 2) + 10 + cell.Frame.Height * indexPath.Row), AutoCompleteTableView.WithSameWidth(this), AutoCompleteTableView.WithSameLeft(this), AutoCompleteTableView.Height().EqualTo(AutocompleteTableViewHeight) ); } else { Superview.InsertSubviewBelow(AutoCompleteTableView, _parentViewController.View); //add constraints Superview.AddConstraints( AutoCompleteTableView.AtTopOf(this, this.Frame.Height - 5), AutoCompleteTableView.WithSameWidth(this), AutoCompleteTableView.WithSameLeft(this), AutoCompleteTableView.Height().EqualTo(AutocompleteTableViewHeight) ); } //listen to edit events this.EditingChanged += async(sender, eventargs) => { if (this.Text.Length > StartAutoCompleteAfterTicks) { showAutoCompleteView(); await UpdateTableViewData(); } }; this.EditingDidEnd += (sender, eventargs) => { hideAutoCompleteView(); }; }