簡體   English   中英

UIAlertView不解雇?

[英]UIAlertView not dismissing?

我在UINavigation控制器中有一些ViewController子類。 我已經成功地在應用程序的其他地方使用了UIAlertViews,我知道如何設置委托並包含正確的委托方法等。

在帶有UITableView的ViewController中,我使用UIRefreshControl實現了“pull to refresh”。 我有一個單獨的類來管理一些XML數據的下載和解析,如果出現連接錯誤,我會發布一個通知。 包含表視圖的視圖控制器會觀察此通知並運行我構建和顯示警報的方法:

UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Connection Error" message:[[notification userInfo] objectForKey:@"error"] delegate:self cancelButtonTitle:@"Close" otherButtonTitles:nil];
alertView.alertViewStyle = UIAlertViewStyleDefault;
[alertView show]; 

警報顯示正確,但cancelButton沒有響應 - 沒有辦法解除警報! 在VC的viewDidLoad方法中放置類似的代碼(相同但沒有通知的userinfo)會創建一個行為正常的警報。

刷新手勢是否會占用第一響應者或其他什么? 我試過[alertView becomeFirstResponder]。 我會很感激任何建議......

更新:包含截圖...這是正確的信息嗎? (因缺乏聲譽而無法嵌入此圖片) http://i.stack.imgur.com/4CGqS.png

編輯

看起來你有一個死鎖或你的線程等待。 您應該查看代碼並查看導致此問題的原因。

在OP中導致更新的原始答案

確保主線程上顯示警報:

dispatch_async(dispatch_get_main_queue(), ^{
    //Open alert here
});

這本身不是一個解決方案,但我可能會在您排除故障時嘗試兩個快速的事情:

1)硬編碼UIAlert中的一些文本,而不是傳入通知對象。 查看行為是否有任何變化。

2)嘗試在警報中添加另一個按鈕,並附帶一個方法來捕獲它。 因此,您將看到委托是否正在獲取任何按鈕消息。

嘗試在alertView添加標記

alertView.tag = 0;

然后在視圖控制器中創建方法alertView:clickedButtonAtIndex:

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex 
{
    if (alertView.tag == 0) {
        [alertView dismissWithClickedButtonIndex:0 animated:YES];
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM