xamarin.ios uitextview uialertcontroller

xamarin.ios - Agregue UITextView en UIAlertView(iOS, Xamarin) sin usar ninguna lib de terceros



uialertcontroller (1)

Quiero mostrar un cuadro de diálogo en iOS y agregar una UITextView a la vista del cuadro de diálogo. El UITextView textView tiene texto con enlaces UITextView para correo electrónico, teléfono y url. Puedo activar el diálogo pero solo con el título y un botón Aceptar. No se agrega vista de texto a la vista de diálogo. No estoy seguro si el problema aquí es con la vista de texto o con la forma en que se agrega la vista al diálogo.

Por favor revisa mi código a continuación:

UITextView textView = new UITextView(); textView.Editable = false; textView.DataDetectorTypes = UIDataDetectorType.All; textView.Message = message; var dlg = UIAlertController.Create(Title ?? String.Empty, null, UIAlertControllerStyle.Alert); dlg.View.AddSubview(textView); dlg.AddAction(UIAlertAction.Create(OkText, UIAlertActionStyle.Default, action => Submit())); var top = Utils.GetTopViewController(); top.PresentViewController(dlg, animated: true, completionHandler: null);

Gracias,


Parece que necesitas una vista emergente personalizada para terminar lo que necesitas, escribo una muestra para ti, este es el código:

Este es ViewController.cs:

public partial class ViewController : UIViewController { public ViewController (IntPtr handle) : base (handle) { } public override void ViewDidLoad () { this.View.BackgroundColor = UIColor.Gray; this.View.AddGestureRecognizer (new UITapGestureRecognizer (() => { CustomPopUpView cpuv = new CustomPopUpView (new CoreGraphics.CGSize (300, 200)); cpuv.PopUp (true,delegate{ Console.WriteLine("cpuv will close"); }); })); } }

Y esta es la CustomPopUpView.cs:

public class CustomPopUpView : UIView { public delegate void PopWillCloseHandler (); public event PopWillCloseHandler PopWillClose; private UIVisualEffectView effectView = new UIVisualEffectView (UIBlurEffect.FromStyle (UIBlurEffectStyle.Dark)); private UIButton btnClose = new UIButton (UIButtonType.System); public CustomPopUpView (CGSize size) { nfloat lx = (UIScreen.MainScreen.Bounds.Width - size.Width) / 2; nfloat ly = (UIScreen.MainScreen.Bounds.Height - size.Height) / 2; this.Frame = new CGRect (new CGPoint (lx, ly), size); effectView.Alpha = 0; this.BackgroundColor = UIColor.White; nfloat btnHeight = 40; btnClose.SetTitle ("Close", UIControlState.Normal); btnClose.Frame = new CGRect (0, this.Frame.Height - btnHeight, this.Frame.Width, btnHeight); btnClose.TouchUpInside += delegate { Close(); }; this.AddSubview (btnClose); } public void PopUp (bool animated = true, Action popAnimationFinish = null) { UIWindow window = UIApplication.SharedApplication.KeyWindow; effectView.Frame = window.Bounds; window.EndEditing (true); window.AddSubview (effectView); window.AddSubview (this); if (animated) { Transform = CGAffineTransform.MakeScale (0.1f, 0.1f); UIView.Animate (0.15, delegate { Transform = CGAffineTransform.MakeScale (1, 1); effectView.Alpha = 0.8f; },delegate { if(null != popAnimationFinish) popAnimationFinish (); }); } else { effectView.Alpha = 0.8f; } } public void Close (bool animated = true) { if (animated) { UIView.Animate (0.15, delegate { Transform = CGAffineTransform.MakeScale (0.1f, 0.1f); effectView.Alpha = 0; }, delegate { this.RemoveFromSuperview(); effectView.RemoveFromSuperview(); if(null != PopWillClose) PopWillClose (); }); } else { if(null != PopWillClose) PopWillClose (); } } }

Simplemente puede agregar lo que desee a este CustomPopUpView, o puede heredarlo y crear su propia ventana emergente.

Espero que te ayude.