gpt4 book ai didi

ios - Xamarin.ios 点击屏幕时关闭 UIAlertController ActionSheet

转载 作者:行者123 更新时间:2023-11-28 23:56:26 26 4
gpt4 key购买 nike

我正在创建一个具有 ActionSheet 样式的 UIAlertController:

UIAlertController actionSheetAlert = UIAlertController.Create(null, null, UIAlertControllerStyle.ActionSheet);

我正在向它添加一个 Action :

UIAlertAction alertAction = UIAlertAction.Create("Action", UIAlertActionStyle.Default, DoSomting);
var alertImage = UIImage.FromBundle("image")
.ImageWithRenderingMode(UIImageRenderingMode.AlwaysOriginal);
alertImage = ResizeImage(sortingAlertImage, 32, 32)
.ImageWithRenderingMode(UIImageRenderingMode.AlwaysOriginal);
alertAction.SetValueForKey(alertImage, new NSString("image"));
alertAction.SetValueForKey(UIColor.Black, new NSString("titleTextColor"));
actionSheetAlert.AddAction(alertAction);

并显示它:

PresentViewController(_actionSheetAlert, true, null);

点击屏幕时如何关闭 UIAlertController?

我可以通过添加“取消”操作来做到这一点,如下所示:

var cancelAlertAction = UIAlertAction.Create("Cancel", UIAlertActionStyle.Cancel, null);
cancelAlertAction.SetValueForKey(UIColor.Black, new NSString("titleTextColor"));
actionSheetAlert.AddAction(cancelAlertAction);

但我不想显示取消操作。

最佳答案

虽然 Hussain 的建议在非常基本的设置中有效,但当您在附加手势识别器的警报下有其他 View 时,它可能会受到干扰。在这种情况下,我通常会做的(也适用于例如关闭键盘)是在我的内容 View 中添加一个全屏不可见按钮。

public readonly UIButton CloseButton;

public MyView()
{
CloseButton = new UIButton(UIButtonType.System);
CloseButton.Alpha = 0; //or CloseButton.Hidden = true;

AddSubview(CloseButton);
}

您可以添加已经在 ViewDidAppear 中的处理程序,因为无法与不可见的 View 进行交互。

UIAlertController actionSheetAlert;

public override void ViewDidAppear(bool animated)
{
contentView.CloseButton.TouchUpInside += CloseAlert;
}

void CloseAlert(object sender, EventArgs e)
{
//Notice the missing null check because the alert should never be null here. If it is you have a problem in your code and you'll find it easily.

actionSheetAlert.DismissViewController(true, () => { });

//Hide the button here.
}

当您打开警报对话框时,您只需让按钮可见即可。如果您想花哨一点并让用户更加清楚点击对话框外部会关闭它,那么您可以将按钮设为黑色,并在对话框打开时将 alpha 设置为 30%。

void OpenDialog() {
//Create dialog, add actions etc.

UIView.Animate(0.3, () => { CloseButton.Alpha = 0.3f});
}

如果您将取消按钮保持在警报状态,请记住将关闭按钮也隐藏在那里,使用 Hidden = true 或 Alpha = 0。

关于ios - Xamarin.ios 点击屏幕时关闭 UIAlertController ActionSheet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51136360/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com