iOS8按钮上的UIAlertView exclusiveTouch

时间:2014-12-08 16:45:10

标签: ios objective-c uialertview

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

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

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

1 个答案:

答案 0 :(得分:2)

我设法找到问题的解决方案。我实现了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变量中的所有子视图都不属于UIButton类或UIControl,这令人困惑。

实际上,不必在所有子视图上设置exclusiveTouch属性。但我这样做是为了降低代码复杂性。

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