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

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

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

【问题讨论】:

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

标签: ios objective-c modalviewcontroller


【解决方案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://stackoverflow.com/a/16609327/1208276

    【讨论】:

      猜你喜欢
      • 2011-06-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-26
      • 2013-10-14
      • 1970-01-01
      • 2012-05-14
      • 2015-04-13
      相关资源
      最近更新 更多