2013-06-20 64 views
0

我已經加入簡單UITapGestureRecognizerUIImageView創造手勢方法被調用,當用戶水龍頭/觸摸UIImageView爲什麼UITapGestureRecognizer不適用於UIImageView?

我的代碼是:

UITapGestureRecognizer *eagleTapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(eagleTapGestureIsCall:)]; 
eagleTapGesture.numberOfTapsRequired = 1; 
[self.egaleImgView addGestureRecognizer:eagleTapGesture]; 

手勢法:

- (void)eagleTapGestureIsCall:(UITapGestureRecognizer *)recognizer 
{ 
    CGPoint location = [recognizer locationInView:[recognizer.view superview]]; 
    NSLog(@"Eagle is Tapped X - %f",location.x); 
    NSLog(@"Eagle is Tapped Y - %f",location.y); 
} 

這裏如果我在UIView,而不是self.egaleImgView再加入手勢它的工作原理(我指手勢的方法被調用)但爲什麼它不工作的self.egaleImgView ???

谷歌搜索後,我發現,可能是UIView攔截觸摸之前,他們可以達到UIImageView

所以我加了下面一行的viewDidLoad

self.view.userInteractionEnabled = NO; /// Here i set userInteractionEnabled = NO; 

下面開始介紹更好地理解結構。

   main UIView 
        |  | 

(Sub view) mainBackGroungImageView //// size is similar to size of main UIView 
        |  | 
     (Sub view) gestureAdded ImageView 

編輯:

對不起你們又忘了提,我已經加入self.egaleImgView.userInteractionEnabled = YES;我的ImageView,但它不是爲我工作。

請給我關於我的問題的建議。

在此先感謝。

+0

你啓用用戶互動?在圖像視圖本身。 –

+2

默認情況下,對圖像視圖禁用用戶操作 – amar

+1

請勿在視圖上禁用'userInteraction'。 –

回答

11

設置您的ImageView.userInteractionEnabled = YES;,因爲它默認爲。最好將視圖的用戶交互設置爲YES。

+0

對不起,我忘記提及我已經做到了(我把self.egaleImgView.userInteractionEnabled = YES;在我的代碼中);但它對我沒有用:( – iPatel

+1

我有同樣的問題,但是這個答案解決了我的問題! – why

0

UIImageView userInteractionEnabled已禁用。使它無法。

UITapGestureRecognizer *eagleTapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(eagleTapGestureIsCall:)]; 
eagleTapGesture.numberOfTapsRequired = 1; 
[self.egaleImgView addGestureRecognizer:eagleTapGesture]; 
self.egaleImgView.userInteractionEnabled = YES; 

我有同樣的問題。這解決了它。

+0

我也做了它,但我的問題沒有解決:( – iPatel

+0

然後,其他一些視圖是在上面。 ? – Durgaprasad

+0

我也嘗試做[self.mainBG bringSubviewToFront:self.view]; [self.egaleImgView bringSubviewToFront:self.mainBG];但它不適用於我:( – iPatel

1

而不是[識別器locationInView:[recognitionizer.view superview]];

使用[recognitionizer locationInView:self];

+1

這是什麼,這不是我的問題,請先閱讀我的問題它的唯一信息對我來說這對我來說並不重要:( – iPatel

2

,如果你設置父userInteractionEnable = NO查看它會級聯到所有子views.Keep它輕拍姿態的enabled.Instead你CA嘗試這樣的事:

爲了獲得在圖像視圖中點擊你可以使用- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event;方法。

在您的視圖的-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event中,您可以看到正在觸摸的視圖。它可以去這樣的事情,

CGPoint locPoint = [touch locationInView:self.view]; 
UIView* touchedSubView = [self.view hitTest:locPoint withEvent:event]; 

然後你就可以添加一個檢查的視圖類和實施需要什麼,像這樣

if ([touchedSubView isKindOfClass:[UIImageView class]]) { 
    //do stuff 
} 

希望這有助於

相關問題