0

我有一個PageControl並且每個頁面(ViewController)具有不同數量的imageviewsUIImageView),它們是動態創建的。在iPad應用程序中爲UIImageView禁用手勢識別器

每個imageview被分配一個gesture recognizer (tapped or move)。由於這些位於PageControl之內,因此我想啓用/禁用gesture recognizer,這樣它就不會干擾頁面事件的swipe

我知道有一個removeGestureRecognizer方法,但我不想每次都刪除並附加該方法。有沒有相當於只啓用和禁用?

感謝

回答

3

您可以使用啓用或類似UIGestureRecognizer的禁止性:

swipeGestureRecognizer.enabled = NO; 

,或者您可以使用手勢識別方法的返回如果你不想觸摸

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer 
     shouldReceiveTouch:(UITouch *)touch; 
+0

謝謝你們兩位。這兩個答案都是正確的,但由於我是動態創建它們(不通過接口),我接受這個答案,但最好知道UI的答案以備將來參考。 – 2013-03-27 04:33:19

1

您可以禁用userInteractionEnabledUIImageView?你能做到這一點在Interface Builder如果你正在做這樣的說法,或者你可以編程設定這個像這樣 - imageView.userInteractionEnabled = NO;希望這有助於...

enter image description here

+0

大,你可以像

imageView.userIntractionEnabled = NO; 

。感謝您的解釋和圖片。即使我在代碼中全部動態執行,這也是一個很好的參考。 – 2013-03-27 04:34:04

+0

很酷。很難在DEV的GUI中構建所有的東西。無論如何,你可以直接從代碼中禁用'userInteraction'。 'imageView.userInteractionEnabled = NO;'這有幫助嗎? – 2013-03-27 04:50:57

2

如果要禁用同時所有的手勢,如果要禁用只有一個手勢識別,然後

NSArray *gestures = imageView.gestureRecognizers; 
for(UIGestureRecognizer *gesture in gestures) 
{ 
    if([gesture isKindOfClass: [UITapGestureRecognizer class]]) 
    { 
     gesture.enabled = NO; 
    } 
+0

請不要使用點語法來發送非財產信息。 – 2013-03-27 05:38:59

+0

對不起..我的錯誤:) – Rafeek 2013-03-27 06:14:13

+0

不用擔心,謝謝! – 2013-03-27 06:15:02