在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
变量内的所有子视图都不属于UIButton
或UIControl
类。实际上,没有必要在所有子视图上设置
exclusiveTouch
属性。但是我这样发布它是为了减少代码复杂性。它工作正常。同时按下两个
UIAlertView
按钮时,应用不再冻结。仅接受其中一台印刷机。关于ios - UIAlertView Exclusive触摸按钮iOS8,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27362692/