Xamarin ios cómo hacer una UITableViewCell autodimensionada mientras edita

Estoy intentando build una UITableView Cell . Después de search en Google, encontré este tutorial: https://pontifex.azurewebsites.net/self-sizing-fitableviewcell-with-uitextview-in-ios-8/, que es bastante bueno.

¿ tableView , está diciendo que tableView ? BeginUpdates puede actualizar el tamaño de la celda personalizada. Pero parece que no funciona en xamarin ios.

¿Podría alguien ayudarme en eso? ¡Muchas gracias!

 using System; using Foundation; using UIKit; using CoreGraphics; namespace Ma { public partial class DataInput : UITableViewCell { public string title { get; set;} public static readonly UINib Nib = UINib.FromName ("DataInput", NSBundle.MainBundle); public static readonly NSString Key = new NSString ("DataInput"); public string value { get; set;} public DataInput (IntPtr handle) : base (handle) { } public static DataInput Create () { return (DataInput)Nib.Instantiate (null, null) [0]; } public void Populate() { this.Title.Text = this.title; if (!string.IsNullOrEmpty(value)) { this.Input.Text = this.value; } } public string GetInputValue() { return this.Input.Text; } public UITableView GetTableView() { UITableView table = null; UIView view = this.Superview; if (view != null) { table = (UITableView)view.Superview; } return table; } public override void AwakeFromNib () { base.AwakeFromNib (); this.Input.ScrollEnabled = false; this.Input.Delegate = new DataInputDelegate (); } public override void SetSelected (bool selected, bool animated) { base.SetSelected (selected, animated); if (selected) { this.Input.BecomeFirstResponder (); } else { this.Input.ResignFirstResponder (); } } } public partial class DataInputDelegate : UITextViewDelegate { public override void Changed (UITextView textView) { var size = textView.Bounds.Size; var newSize = textView.SizeThatFits (new CGSize (size.Width, size.Height)); if (size.Height != newSize.Height) { UITextView.AnimationsEnabled = false; UITableViewCell input = (UITableViewCell)textView.Superview.Superview; UITableView tableView = (UITableView)input.Superview.Superview; // This is the place of updating custom cell size, but It's not working now. tableView.BeginUpdates (); tableView.EndUpdates (); UITextView.AnimationsEnabled = true; var thisIndexPath = tableView.IndexPathForCell (input); tableView.ScrollToRow (thisIndexPath, UITableViewScrollPosition.Bottom, false); } } } } 

Por cierto, estoy usando autolayout y configurar

 TableView.EstimatedRowHeight = 50; TableView.RowHeight = UITableView.AutomaticDimension; 

Y también he hecho la siguiente configuration.

 public override nfloat GetHeightForRow(UITableView tableView, NSIndexPath indexPath) { if (indexPath.Row == 0) { return 80.0f; } return UITableView.AutomaticDimension; } 

¡Muchas gracias si alguien me puede guiar!

Sobre la base de las restricciones colocadas en la vista, la reproducción automática funcionará. El código funciona bien después de configurar las restricciones de cada componente.