防止出现第二个模态视图?

Posted

技术标签:

【中文标题】防止出现第二个模态视图?【英文标题】:Prevent a second modal view from appearing? 【发布时间】:2014-05-06 01:59:37 【问题描述】:

我查看的控制器具有用户可以与之交互的不同按钮。每个人都做了不同的事情,但他们都以模态方式呈现了一个新的视图控制器。问题是用户有时间在第一次演示发生之前点击另一个按钮,这会导致崩溃。有没有办法阻止用户点击另一个按钮或检测模态演示是否已经发生?

我只是不想让用户一次呈现超过 1 个模态视图控制器。

【问题讨论】:

您可以在没有动画的情况下显示模态视图控制器。或者在显示另一个视图控制器时禁用其他按钮。这行得通吗? 我绝对需要让演示文稿变成动画。也可以禁用按钮,但其中一些不需要。你认为我应该手动禁用我不想触及演示可能性的按钮吗? 当你点击按钮呈现设置所有按钮启用NO。然后在从类中展示 NewViewController 之后,调用委托以启用主视图控制器中的所有按钮。 【参考方案1】:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender


if ([[segue identifier] isEqualToString:@"whateverSegue"])
    
    [button setEnabled:NO];
    

如果它只有一次,这应该可以解决问题 - 否则一个名为 disableButtons 的辅助方法或调用的东西如果它在几个地方应该可以解决问题!

【讨论】:

【参考方案2】:

检查以下步骤是否有帮助。

单击按钮后,您可以禁用视图的用户交互。

-(IBAction)clickedButton:(id)sender 
   [self.view setUserInteractionEnabled:NO];

   // Do other things here

当模型视图控制器出现时,启用视图的用户交互。

[self presentViewController:aViewController animated:YES completion:^
   [self.view setUserInteractionEnabled:NO];
];

或者,您可以尝试以下方法来禁用应用程序中的触摸

[[UIApplication sharedApplication] beginIgnoringInteractionEvents];

[[UIApplication sharedApplication] endIgnoringInteractionEvents];

https://***.com/a/16609327/1208276

【讨论】:

以上是关于防止出现第二个模态视图?的主要内容,如果未能解决你的问题,请参考以下文章

模态segue推动顶部的附加导航栏滑动

模态视图防止其他视图旋转

在 iPad 上,如何防止模态视图在键盘呈现时向上移动?

用 MVC3 创建的第二个数据库,如何防止?

如何防止工作表在 SwiftUI 中使其后面的视图变暗或删除不必要的填充?

SwiftUI - 如何关闭假的模态视图 - 从里面的第二个视图,用关闭按钮?