2012-05-05 103 views
14

快速問題:如何檢測輕擊手勢識別器是否在視圖的子視圖內?例如。如果我點擊一個對象,例如添加了作爲子視圖的方塊,並添加了輕拍手勢識別器,我如何檢測到它已被輕敲?如何在子視圖中檢測輕擊手勢

+0

請說清楚你喜歡做什麼?想要識別點擊子視圖? –

回答

37

當您使用-locationInView:的任何視圖分別調用處理程序方法時,您可以抓取手勢識別器的點擊點。然後,在UIView上使用以下方法:- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event以獲取對被點擊的實際子視圖的引用,並記住您傳入的點與視圖在同一座標空間中。

一些代碼來讓你開始:

CGPoint point = [tapGestureRecognizer locationInView:parentView]; 
UIView *tappedView = [parentView hitTest:point withEvent:nil]; 

對於命中測試工作的看法需要有userInteractionEnabled屬性設置爲YES。許多視圖(如UILabel)默認情況下都設置爲NO。上述所以之前:

self.subviewOfInterest.userInteractionEnabled = YES; 
+0

謝謝,這有助於很多! – Fitzy

+0

謝謝@Brandom –

0

可以使用requireGestureRecognizerToFail:識別子視圖上水龍頭,請參閱this代碼

13

也許你應該設置爲: subviews.userInteractionEnabled = YES; 祝你好運!

+0

該死!這是我需要的。我的子視圖被gestureRecognizer忽略,現在它工作。謝謝。 – surfrider

相關問題