2011-01-08 61 views
2

我有許多類,並且想要將UIGestureRecognizer添加到它們的UIImageViews中。UIGestureRecognizer只適用於一個類

我給所有的類增加了一個。事情是我複製代碼,以便每個類都添加相同的識別器。這些是本地識別器

UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget : self action : @selector (handleSingleTap:)]; 
[singleTap setNumberOfTapsRequired:1]; 
[background addGestureRecognizer:singleTap]; 
[singleTap release]; 

所以它應該仍然適用於每個類。

問題是它只適用於第一類,而不適用於其他類。

背景是UIImageView並存在於每個類中。所以我有多個背景。

我介紹了每個新的ModelViewController類,這可能是什麼問題?

我將識別如下

- (void) handleSingleTap : (UIGestureRecognizer*) sender 
{ 
     //do whatever 
} 

每類還實現了

@interface Someclass : UIViewController <UIGestureRecognizerDelegate> 

林不知道爲什麼它不是,雖然工作。我在每個handleSingleTap方法中都有一個打印輸出。並沒有打印。

回答

9

首先 你加入相同識別對象不同的看法?如果這樣,將無法正常工作。 UIGestureRecognizer對象僅在一個視圖中檢測/跟蹤手勢。所以一定要確保你有一個不同的識別對象爲您的每一個意見,如:

UITapGestureRecognizer *r1 = [UITapGestureRecognizer alloc] initWithTarget:self action:...]; 
[view1 addGestureRecognizer:r1]; 
[r1 release]; 

UITapGestureRecognizer *r2 = [UITapGestureRecognizer alloc] initWithTarget:self action:...]; 
[view2 addGestureRecognizer:r2]; 
[r2 release]; 

... 

確保視圖(在這種情況下的UIImageView)是[uiimageview setUserInteractionEnabled:YES];

如果你只是檢測簡單的觸摸則沒有必要採取UIGestureRecognizerDelegate協議,因此單從@interface刪除該協議

希望它可以幫助

+0

其實我只是需要添加這個[someUiImageView setUserInteractionEnabled:YES];感謝您的幫助 – jarryd 2011-01-09 22:50:02

相關問題