Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xamarin.forms 如何取消xamarin表单中的弹出窗口?_Xamarin.forms - Fatal编程技术网

Xamarin.forms 如何取消xamarin表单中的弹出窗口?

Xamarin.forms 如何取消xamarin表单中的弹出窗口?,xamarin.forms,Xamarin.forms,如何取消xamarin表单中的弹出窗口? 我正在通过调用显示警报弹出窗口 var actionButton2 = new Button { Text = "ActionSheet" }; actionButton2.Clicked += async (sender, e) => { var action = await DisplayActionSheet ("ActionSheet: Save Photo?", "Cancel", "Delete", "Photo Roll",

如何取消xamarin表单中的弹出窗口? 我正在通过调用显示警报弹出窗口

var actionButton2 = new Button { Text = "ActionSheet" };
actionButton2.Clicked += async (sender, e) => {
    var action = await DisplayActionSheet ("ActionSheet: Save Photo?", "Cancel", "Delete", "Photo Roll", "Email");
    Debug.WriteLine("Action: " + action); // writes the selected button label to the console
};
现在,我如何以编程方式消除它呢?

你不能

操作表是为用户交互而设计的,而不是为编程交互而设计的。动作表的整个思想是,程序流依赖于用户在该点的输入,没有该输入就无法继续


因此,用户必须对操作表进行处理,或者通过按下硬件后退按钮来取消操作表

给出一个更详细的答案


Forms方法
DisplayActionSheet
不支持解散,所以基本上不能。但是,本机操作系统有自己的方法,
DisplayActionSheet
映射到这些方法。在iOS上不可能取消此类警报,但在Android上则是:。因此,如果您希望在Android上关闭对话框,这是可能的,但您需要使用本机方法来调用它。

只是想澄清一下:在哪种情况下,您希望这样做?如果你显示操作表,你需要用户如何反应。在我的情况下,其他人关闭了对话框。用户A发送请求。用户B什么也不做。用户A结束请求。我想隐藏对用户B的请求。真正的答案是界面设计糟糕。所有其他以这种方式运行的方法都有一个“Async”后缀,我使用的所有方法都有一个取消令牌选项,该选项在任何操作系统中都可以使用。对不起,这只是一个非常非常糟糕的接口,您的逻辑很幼稚。我可以很容易地看到一条错误消息,当您出现通信错误时,它会弹出,给用户退出应用程序的选项,或者只是在错误清除之前挂起。如果通信错误自行清除了所有错误,则需要以编程方式解除弹出警报。