2013-10-16 57 views
3

在iOS7出來之前,iOS版本中的以下代碼沒有問題,現在當我試圖在iOS7上運行時,我得到了不希望的結果。iOS7中的UIAlertView在關閉時鎖定顯示

[self.view setUserInteractionEnabled:YES]; 
mAlert=[[UIAlertView alloc] initWithTitle:@"Alert" message:@"There are no more reports matching this search query." delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil]; 
[mAlert show]; 
[SVProgressHUD dismiss]; 

提示信息會出現並提示用戶點擊確定。當警報解散時,我留下了現在不再可以與之互動的視圖,唯一的解決方案是重新運行應用程序。該應用程序本身並沒有「凍結」,因爲在我的配置文件中,它可以看到它仍然活着,我只是無法與它互動。我實現UIAlertViewDelegate以下是我實現didDismissWithButtonIndex的:功能

-(void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex: (NSInteger)buttonIndex { 
mAlert = nil; 
} 

我已經試過幾件事情,並且仍然一無所獲。令人難以置信的沮喪,我覺得我失去了一些微不足道的東西。

+1

是您的代碼創建並顯示警報在主線程上運行?其他一些代碼塊是否設置了'setUserInteractionEnabled:NO',並且恰好在同一時間運行? – jszumski

+0

對不起,我忘了澄清。如果我註釋掉一行「[mAlert show];」該應用程序繼續運行良好。如果我顯示警報,警報就會出現,我可以解除它沒有問題。但一旦被解僱,我就不能再與用戶界面進行交互了。 – user2887434

+1

你是否在後臺線程中顯示警報? – karthika

回答

3

您確定該方法正在主線程中運行嗎?任何對UI執行某些操作的方法都需要在主線程上運行,而不是後臺線程。

如果你想顯示從後臺線程的快訊,請在後臺方法試試這個:

[self performSelectorOnMainThread:@selector(showAlert) withObject:nil waitUntilDone:YES]; 

,並添加一個方法,像這樣

- (void) showAlert { 
    UIAlertView *mAlert=[[UIAlertView alloc] initWithTitle:@"Alert" message:@"There are no more reports matching this search query." delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil]; 
    [mAlert show]; 
}