Xamarin.ios 在UIAlertView(iOS、Xamarin)上添加UITextView,而不使用任何第三方库
我想在iOS中显示一个对话框,并在对话框视图中添加一个Xamarin.ios 在UIAlertView(iOS、Xamarin)上添加UITextView,而不使用任何第三方库,xamarin.ios,uitextview,uialertcontroller,Xamarin.ios,Uitextview,Uialertcontroller,我想在iOS中显示一个对话框,并在对话框视图中添加一个UITextView。UITextViewtextView包含可点击的电子邮件、电话和url链接文本。我可以触发对话框,但只能使用标题和“确定”按钮。没有文本视图被添加到对话框视图中。我不确定这里的问题是与textview有关,还是与视图添加到对话框的方式有关 请在下面检查我的代码: UITextView textView = new UITextView(); textView.Editable = false; textView.D
UITextView
。UITextView
textView包含可点击的电子邮件、电话和url链接文本。我可以触发对话框,但只能使用标题和“确定”按钮。没有文本视图被添加到对话框视图中。我不确定这里的问题是与textview有关,还是与视图添加到对话框的方式有关
请在下面检查我的代码:
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);
谢谢,似乎您需要一个自定义弹出视图来完成所需的内容,我为您编写了一个示例,以下是代码: 这是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");
});
}));
}
}
这是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 ();
}
}
}
您可以将任何需要的内容添加到此CustomPopUpView,也可以继承它并创建自己的弹出窗口
希望它能帮助您。这就是如何在UIAlertViewController中添加UITextField的方法
var alert = UIAlertController.Create(Enter OTP, "", UIAlertControllerStyle.Alert);
alert.AddTextField((obj) =>
{
obj.Font = UIFont.SystemFontOfSize(20);
obj.TextAlignment = UITextAlignment.Center;
obj.Placeholder = "OTP";
});
alert.AddAction(UIAlertAction.Create("Submit", UIAlertActionStyle.Default, (obj) =>
{
chargeReference = reference;
statusValue = alert.TextFields[0].Text;
CompleteFunding();
}));
PresentViewController(alert, true, null);
我希望这有助于当我关闭弹出窗口时,屏幕上仍有小的白色区域,我更改了
Transform=CGAffineTransform.MakeScale(0.1f,0.1f)代码>到Transform=CGAffineTransform.MakeScale(0.01f,0.01f)代码>很抱歉,我忘了删除它,你应该在关闭动画完成后删除它,我已经编辑了我的代码,谢谢你提醒。@FahadRehman