2013-04-07 28 views
0

我有一堆UITableView行。當用戶點擊一個排,一個自定義彈出(這是一個自定義的UIView)將出現在桌子上:iOS:刪除UITableView上的UIView導致無法與表交互

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    PopUp *myPopUp = [[PopUp alloc] initWithFrame:CGRectMake(0, 0, 320, 568)]; 
    [self.view addSubview:myPopUp]; 
} 

我加載從筆尖我自定義的UIView彈出:

- (id)initWithFrame:(CGRect)frame 
{ 
    self = [super initWithFrame:frame]; 
    if (self) { 
     [self loadNib]; 
    } 
    return self; 
} 

- (void) loadNib 
{ 
    NSArray *subviewArray = [[NSBundle mainBundle] loadNibNamed:@"PopUp" owner:self options:nil]; 
    UIView *mainView = [subviewArray objectAtIndex:0]; 
    [self addSubview:mainView]; 
} 

在彈出,存在當按壓導致的彈出來關閉按鈕:

- (IBAction)closePopUp:(id)sender 
{ 
    [self removeFromSuperview]; 
} 

按下按鈕時彈出消失。但是,下面的UITableView不能再與之交互(即用戶不能滾動表格,不能在另一行上點擊等)。我希望PopUp消失,並讓表格再次完全互動。任何人都可以解釋爲什麼發生這種情況,我可以解決這個問題?謝謝!


編輯與截圖

  1. 的UITableView與一行數據:http://imgur.com/PlIufHI,xGKxUul,qkt27oZ#0

  2. 當選擇一排,myPopUp出現在頂部:http://imgur.com/PlIufHI,xGKxUul,qkt27oZ#1

  3. 當按下「x」自定義按鈕,它調用closePopUp,rem oves myPopUp from the superview:http://imgur.com/PlIufHI,xGKxUul,qkt27oZ#2

  4. 用戶無法與表格進行交互。用戶不能選擇一行,滾動表等

回答

2

實際上,您刪除您從筆尖文件加載視圖,但父是捕捉(0, 0, 320, 568)矩形內的每一個觸摸另一張空白的UIView。

嘗試從closePopUp方法去除上海華:

[self.superview removeFromSuperview]; 
+0

啊,這是做到了。非常感謝! – Chun 2013-04-07 23:22:03

2

我不知道發生了什麼事情在你的具體情況,但我可以告訴你,添加子視圖到UITableView可能導致類似的意外行爲這個,這通常是一個壞主意。

爲了解決發生的問題並獲得更清潔的結構,我建議您將彈出視圖添加到窗口而不是表格視圖。

[self.view.window addSubview:myPopUp]; 
+0

我已經試過您的解決方案,但是當我刪除myPopUp用戶不能與屏幕在所有互動。如果這有助於澄清我的問題,我編輯了我的帖子和截圖:http://imgur.com/PlIufHI,xGKxUul,qkt27oZ ...我在調試過程中發現了一些東西:如果我將框架設置爲0,0,那麼用戶可以與它後面的表進行交互,但不能與myPopUp進行交互。當框架爲320,568時,用戶可以與myPopUp進行交互,但不能與其後的表進行交互。 – Chun 2013-04-07 23:17:07

+0

@Chun你可以在Xcode斷點後輸入這個命令來檢查你的視圖層次結構:'po [self recursiveDescription]'。這對調試像這樣的問題很方便。 – 2013-04-07 23:22:25