2012-12-07 29 views
0

在View Controller中,我構建了一個圖標網格。 每個圖標都會打開相同的彈出視圖,但會填入不同的信息。禁用底層ViewController中的UIGestureRecognizers

我用這種方法創建的網格:

for (int i=0; i<NUM_BADGES; i++) { 
    BadgeThumbView *thumb = [[BadgeThumbView alloc] initWithFrame:CGRectMake(posX, posY, 70, 100) 
                andWithLabel:[NSString stringWithFormat:@"BADGE NAME N. %d", i]]; 
    UITapGestureRecognizer *gestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(onBadgeTapped:)]; 
    [thumb addGestureRecognizer:gestureRecognizer]; 
    [thumb setTag:i]; 
    [more code here....] 

} 

而在onBadgeTapped方法我創建彈出。 現在我的問題是,一切工作正常,但我只是意識到,當彈出窗口打開時,與它的按鈕交互,我仍然觸發底層視圖控制器中的手勢識別器。

有沒有辦法在底層視圖中禁用所有的GestureRecognizers?我的策略錯了嗎?並且:有沒有辦法爲我的所有圖標使用單個UIGestureRecognizer,以便以更簡單的方式禁用/啓用?

非常感謝

+0

如果有幫助,我有一個例子[github](https://github.com/NSPostWhenIdle/photoGrid),它使用UIButton來簡單實現。 –

回答

1

您可以從視圖中刪除識別或設置userInteractionEnabled暫時禁用它。根據彈出窗口的實現方式,您可以一次禁用所有窗口。

一種解決方案是將拇指添加爲容器UIView的子視圖,並將該容器添加到父視圖。您可以通過在容器視圖上設置userInteractionEnabled來啓用/禁用全部。

0

我認爲你應該做一些事情就像禁用用戶交互的所有拇指意見時,彈出窗口出現,並重新啓用消失這樣

[[yourSuperView subviews]makeObjectsPerformSelector:@selector(setUserInteractionEnabled:) withObject:[NSNumber numberWithBool:FALSE]]; 

不然,添加所有thumbViews一個子視圖(說「B ')然後將視圖'b'添加到超級視圖(稱爲'a')作爲子視圖並關閉用戶交互,以在彈出窗口出現時查看b,並在彈出窗口消失時開啓