即使在采取响应操作后,UIAlertView 也不会消失

Posted

技术标签:

【中文标题】即使在采取响应操作后,UIAlertView 也不会消失【英文标题】:UIAlertView not fading even after the response action is taken 【发布时间】:2011-12-10 08:01:44 【问题描述】:

在我的 UIAlertView 中,我想在按下“确定”按钮时打开另一个 UIView。

但问题是,即使在 UIView 显示后,警报仍保留在屏幕中,一旦消失,UIView 似乎已被禁用。

UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Add details" message:@" Do you like to set the details now?" delegate:self cancelButtonTitle:@"Yes" otherButtonTitles:@"No",nil];
[alert show];
[alert release];

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
   // the user clicked one of the OK/Cancel buttons
    NSString *title = [alertView title];

    if([title isEqualToString:@"Add details"])
    
        .......

任何帮助将不胜感激!

【问题讨论】:

【参考方案1】:

为什么不检查委托方法中按下的按钮而不是标题? 也就是说,在

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex

    if (buttonIndex == 0)
        // User pressed "YES"
    else
        // User pressed "NO"
    

取消按钮的索引为 0,其他按钮的索引增加。为了检测这是哪个警报,您还应该给它一个标签。希望这会有所帮助。

【讨论】:

【参考方案2】:

可能是因为在实际关闭警报视图之前添加了新视图。所以最好使用 didDismissWithButtonIndex 委托来显示现有警报视图的按钮单击事件的新视图,而不是 clickedButtonAtIndex

- (void) alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex

//Add the view

代替

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex

//Add the view

【讨论】:

以上是关于即使在采取响应操作后,UIAlertView 也不会消失的主要内容,如果未能解决你的问题,请参考以下文章

在 iOS 7 SDK 中关闭 UIAlertview 后 UIView 没有响应

即使 PreparedStatement 仅使用一次,ResultSet 关闭错误后也不允许操作

在 AFHTTPRequestOperation 失败时显示 UIAlertView

即使服务器返回适当的响应标头,Firefox 也不允许 CORS 请求

如何更改 UIAlertView 按钮的宽度?

迁移到 Xcode 7 后 UIAlertView 和 UIWebView 不起作用