在UIAlterView的代理方法中 點擊確定時 添加一個UIView到[[UIApplication sharedApplication].keyWindow上只出現了0.5秒左右就消失的問題


昨天,遇到一個很奇葩的問題,看下面代碼:

-(void) alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
    switch (buttonIndex) {
        case 0:
        {
            [self.navigationController popViewControllerAnimated:YES];
            break;
        }
        case 1:
        {
            UIView *v = [[UIView alloc]initWithFrame:[UIScreen mainScreen].bounds];
            v.backgroundColor = [UIColor redColor];
            [[UIApplication sharedApplication].keyWindow addSubview:v];
            break;
        }
        default:
            break;
    }
}

在彈出一個警告框的時候,我想點擊確定按鈕,然後加一個viewwindow上,可是我發現,這個view只出現了零點幾秒就消失了。

在我無助的時候,請教了老大,發現原來alertview也是加在window上的,在點擊確定的時候,刪除alterview的同時,把剛添加的view也跟着刪除了。

所以,我就延時一段時間後在生成這個view:

-(void) alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
    switch (buttonIndex) {
        case 0:
        {
            [self.navigationController popViewControllerAnimated:YES];
            break;
        }
        case 1:
        {
            
            [self performSelector:@selector(delayView) withObject:nil afterDelay:0.6];
            break;
        }
        default:
            break;
    }
}

- (void)delayView{
    UIView *v = [[UIView alloc]initWithFrame:[UIScreen mainScreen].bounds];
    v.backgroundColor = [UIColor redColor];
    [[UIApplication sharedApplication].keyWindow addSubview:v];
}


這樣view就不會出現消失的情況了,注意延時的時間要大於0.5秒。




發佈了20 篇原創文章 · 獲贊 0 · 訪問量 14萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章