ios - 无法在 Mac Catalyst 中以编程方式关闭警报?
问题描述
我正在显示这样的警报:
self.connectingAlert = [UIAlertController
alertControllerWithTitle:@""
message:NSLocalizedString(@"CONNECTING", nil)
preferredStyle:UIAlertControllerStyleAlert];
[self.connectingAlert addAction:[UIAlertAction
actionWithTitle:NSLocalizedString(@"BUTTON_CANCEL", nil)
style:UIAlertActionStyleCancel
handler:^(UIAlertAction *action) {
[self cancelRequest];
}]];
[self presentViewController:self.connectingAlert animated:TRUE completion:nil];
然后稍后我想像这样以编程方式关闭警报:
[self dismissViewControllerAnimated:FALSE completion:nil];
关闭代码在 iOS 中运行良好,但在 Mac Catalyst 中没有任何作用。这可能与警报显示为应用程序窗口的一部分(在应用程序之外)以及显示样式被忽略的事实有关。但我希望驳回方法仍会影响 Mac 警报。
我试过这个以确保一切都正确连接:
UIViewController *test1 = self.connectingAlert.presentingViewController;
UIViewController *test2 = self.connectingAlert.presentingViewController.presentedViewController;
test1
返回视图控制器所属的导航控制器,这看起来很奇怪,但它在 iOS 上做同样的事情。test2
返回我的警报。只是为了确保,我尝试了这段代码,但它也不起作用:
[self.connectingAlert.presentingViewController dismissViewControllerAnimated:FALSE completion:nil];
这个事情谁有经验?我在文档中没有看到任何关于它的内容。
解决方案
事实证明,虽然您应该将关闭消息发送到呈现(父)视图控制器......
[self dismissViewControllerAnimated:FALSE completion:nil];
...我必须改为将解除消息发送到警报,然后解除:
[self.connectingAlert dismissViewControllerAnimated:FALSE completion:nil];
的文档dismissViewControllerAnimated
说:
呈现视图控制器负责关闭它呈现的视图控制器。如果您在呈现的视图控制器本身上调用此方法,UIKit 会要求呈现的视图控制器处理解除。
我认为这意味着 Mac Catalyst 在呈现和呈现的视图控制器之间的连接上做了一些有趣的事情。如果我检查self.presentedViewController
,那给了我UIAlertController
。但是如果我打电话self dismiss dismissViewControllerAnimated...
,什么都不会发生,就好像没有呈现视图控制器一样。但是,如果我调用self.connectingAlert dismissViewControllerAnimated...
,dismiss 方法会以某种方式找到真正呈现视图控制器的方式。我会将此作为错误报告给 Apple。
同时,我很高兴有一个解决方法。
推荐阅读
- .net - 如何将自定义标头添加到 AWS S3 .NET SDK GetObjectRequest?
- javascript - 在考虑相同值的键的同时将数组转换为对象
- javascript - 使用 Javascript 在屏幕外创建窗口?
- flutter - 如果 Row 有两个 Text 小部件,则设备上没有 Flutter 视图可用
- php - 如何正确使用与 php 相关的“活动”类
- python - 与 python3 一起使用时,ConfigParser 库不起作用
- kubernetes - 我如何在 Kubernetes 中创建新的命名空间
- c++ - 如何根据模板类的基类专门化成员函数
- c - 将文本文件读入 C 中的二维数组
- php - 将订单客户备注添加到 YITH Woocommerce PDF 发票