2012-06-11 2 views
6

Ho creato una sottoclasse personalizzata di UIView perché avevo bisogno di sovrascrivere il metodo drawRect. Cerco di aggiungere un UITapGestureRecognizer ad esso, ma questo non funziona per me. Qui, il codice della mia ViewController:UITapGestureRecognizer non viene attivato nella sottoclasse UIView

MyCustomView *customView = [[MyCustomView alloc] initWithFrame:CGRectFrame(0, 30, 30, 30)]; 
[customView setUserInteractionEnabled:YES]; 

UITapGestureRecognizer *tapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(doSomething)]; 
[customView addGestureRecognizer:tapGestureRecognizer]; 

non capisco il motivo per cui, quando mi tocco il mio oggetto UIView sottoclasse, il sistema di riconoscimento gesto non si attiva in su.

Grazie mille in anticipo!

FISSO!

La mia vista era su UIImageView e UIImageView non aveva userInteractionEnabled impostato su SÌ.

+0

i tuoi limiti/frame sono corretti? – CarlJ

+0

Apparentemente sì, il mio sottopassaggio è in realtà un cerchio disegnato con CoreGraphics. il frame è: 10, 30, 30, 30. – Vinestro

+0

Per informazioni (potrebbe essere d'aiuto), il codice che ti mostro è nel metodo tableView: cellForRowAtIndexPath. Un'idea? – Vinestro

risposta

13

FISSO!

La mia vista era su UIImageView e UIImageView non aveva userInteractionEnabled impostato su SÌ.

+0

Questo mi ha aiutato anche 3 anni dopo. Grazie! – yeesterbunny

0

Assicurarsi di visualizzarlo da qualche parte (addSubview).

+0

Sì, visualizzo la mia vista. Applico un metodo addSubview dopo l'aggiunta del riconoscitore di gesti. – Vinestro

0

Assicurarsi inoltre che userInteractionEnabled sia impostato su true. Se è vero, pubblica il codice che crea e collega il riconoscimento dei gesti.

+0

userInteractionEnabled è impostato su true. Ho postato il codice nel mio primo codice solo in cima all'argomento. Grazie in anticipo – Vinestro

0

Impostare il controllo UserInteractionEnable true sulla visualizzazione secondaria che si sta aggiungendo e nel metodo di selezione, fare passare l'oggetto con essa cioè

UITapGestureRecognizer *tapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(doSomething:)]; 

e rendere il metodo di selezione come

-(void) doSomething:(UITapGestureRecognizer *)gesture; 

Fammi sapere se hai ancora un problema. Grazie!

+0

Era solo che UIImageView in cui aggiungo la mia sottoview non era userInteractionEnabled ... Risolto, grazie! – Vinestro

+0

È grandioso. Ora non dimenticare di lasciare il messaggio senza risposta o senza segno. Cheers! –