UIAlertView的委托方法alertViewCancel:不会被调用

时间:2012-01-17 13:35:35

标签: iphone objective-c cocoa-touch uialertview

UIAlertViewDelegate协议声明如下:

// Called when we cancel a view (eg. the user clicks the Home button). This is not called when the user clicks the cancel button. 
// If not defined in the delegate, we simulate a click in the cancel button 
- (void)alertViewCancel:(UIAlertView *)alertView; 

但是,我显示了UIAlertView,当我现在点击模拟器中的主页按钮时,方法alertViewCancel:不会被调用。请注意,当我触摸AlertView上的按钮时,会调用alertView:clickedButtonAtIndex:委托方法,以便正确连接委托。

这是苹果方面的错误还是我,或者模拟器?

修改:

我目前通过收听UIApplicationWillResignActiveNotification通知来解决此问题,我将执行以下操作以解除AlertView:

[self.currentAlert dismissWithClickedButtonIndex:-1 animated:NO];
[self.currentAlert release];
self.currentAlert = nil;

1 个答案:

答案 0 :(得分:3)

当系统实际取消您的警报视图时调用它。当您的应用程序进入后台时,您的警报视图不会被取消,除非您的应用程序被flotsam进程驱逐,当您再次成为前台时,您的警报视图将再次弹出。我认为,虽然我不确定,如果flotsam杀死你的进程,你将把这个委托调用作为拆解序列的一部分。

在这一点上,文档可能有点误导。曾经是主页按钮按下取消警报的情况,但情况并非总是如此。