在iOS 7上,当呈现UIAlertView时,其按钮似乎自动设置为exclusiveTouch=YES
。这样,如果您同时在警报视图上按下多个按钮,则不会发生任何事情。
在iOS 8上不是这种情况。当我用2个按钮呈现UIAlertView时。我同时按下这两个按钮,应用程序冻结。
我无法访问UIButton
上的UIAlertView
。我无法访问UIAlertView
的任何子视图。
alertView.subview
返回空数组,无论我称之为生命周期的哪个部分。
答案 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
的两个按钮时,应用程序不再冻结。只接受其中一台印刷机。