2012-05-05 13 views
14

Domanda veloce: come posso rilevare se un riconoscitore di gesti di tocco si trova in una sottoview della vista a cui è aggiunto? Per esempio. se clicco su un oggetto come un quadrato che è stato aggiunto come sottoview a uno sfondo a cui è stato aggiunto un riconoscitore di gesture, come posso rilevare che è stato toccato?Come rilevare un gesto di tocco nelle sottoview

+0

Si prega di fornire chiari chiarimenti cosa ti piace fare? vuoi riconoscere il clic sulla sottoview? –

risposta

37

È possibile afferrare il punto del rubinetto del rilevatore di gesti quando il metodo del gestore viene richiamato in base a qualsiasi visualizzazione desiderata utilizzando -locationInView:. Quindi, utilizzare il seguente metodo su UIView: - (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event per ottenere un riferimento alla visualizzazione secondaria effettiva che è stata toccata, ricordando che il punto in cui si passa è nello stesso spazio di coordinate della vista.

Alcuni codice per iniziare:

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

Per hit testing a lavorare la vista ha bisogno di avere la proprietà userInteractionEnabled impostata YES. Molte visualizzazioni, ad esempio UILabel s, hanno impostato su NO per impostazione predefinita. Quindi, prima di quanto sopra:

self.subviewOfInterest.userInteractionEnabled = YES; 
+0

Grazie, questo aiuta molto! – Fitzy

+0

Grazie @Brandom –

0

è possibile utilizzare il requireGestureRecognizerToFail: di riconoscere il rubinetto visualizzazione secondaria si rimanda this codice

13

forse si dovrebbe impostare come: subviews.userInteractionEnabled = YES; buona fortuna!

+0

Dannazione! Questo è quello di cui avevo bisogno. La mia sottoview è stata ignorata da gestureRecognizer e ora funziona. Grazie. – surfrider

Problemi correlati