在iOS 7上,当显示UIAlertView时,其按钮似乎自动设置为exclusiveTouch=YES。这样,如果您同时在警报视图上按下多个按钮,则不会发生任何可怕的事情。

在iOS 8上不是这种情况。当我显示带有2个按钮的UIAlertView时。我同时按下这两个按钮,应用程序冻结。

我无法访问该UIButton上的UIAlertView。我无法访问UIAlertView的任何子视图。
alertView.subview返回空数组,无论我在生命周期的哪个部分调用它。

最佳答案

我设法找到了解决问题的办法。我实现了UIAlertView的委托方法:

-(void)didPresentAlertView:(UIAlertView *)alertView
{
    UIView *view = ((UIApplication*)[UIApplication sharedApplication]).keyWindow.rootViewController.presentedViewController.view;
    [self setExclusiveTouchForView:view];
}

-(void) setExclusiveTouchForView:(UIView*)view
{
    for (UIView *subview in view.subviews) {
        subview.exclusiveTouch = YES;
        [self setExclusiveTouchForView:subview];
    }
}


起初,令人困惑的是,view变量内的所有子视图都不属于UIButtonUIControl类。

实际上,没有必要在所有子视图上设置exclusiveTouch属性。但是我这样发布它是为了减少代码复杂性。

它工作正常。同时按下两个UIAlertView按钮时,应用不再冻结。仅接受其中一台印刷机。

关于ios - UIAlertView Exclusive触摸按钮iOS8,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27362692/

10-16 22:20