2017-08-04 14 views
-1

Mon bouton personnalisé événement touchupinside pas le feu quand je mets un peu de code dans mon bouton personnaliséévénement bouton personnalisé de touchUpInside pas le feu

Note: Quand je tape sur le bouton de cette méthode est le feu, mais la méthode touchUpInside pas le feu

- (void) touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event { 
    NSLog(@"touchBegan"); 
    [Singleton playSoundForEvent:Sound_ButtonTap]; 
} 

Si je supprime le code ci-dessus, cela fonctionne correctement.

Raison du code ci-dessus: Je ne mets pas le son du robinet partout sur la touche tactile. Je voudrais seulement un code de ligne dans le projet entier.

+0

touchesBegan appelé pour chaque UIControls alors comment allez-vous gérer cette –

+0

@ Anbu.Karthik S'il vous plaît vérifier ci-dessous réponse, il woking bien pour moi, donc mon problème a été résolu. – Vivek

Répondre

1

Vous avez oublié l'appel à super

[super touchesBegan:touches withEvent:event]; 

La raison pour laquelle il ne fonctionne pas sans l'appel à super, est qu'un bouton doit enregistrer les événements tactiles (touchesBegan, touchesEnded, touchesMoved, touchesCanceled) pour être en mesure de les mapper à UIControlEvent, et seulement ensuite les actions de tir avec sendAction.

code complet

- (void) touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event { 
    [super touchesBegan:touches withEvent:event]; 
    NSLog(@"touchBegan"); 
    [Singleton playSoundForEvent:Sound_ButtonTap]; 
} 
+0

Mais quand je supprime le code ci-dessus alors fonctionne bien, – Vivek

+0

Oui, car alors votre bouton personnalisé utilise sa fonction parente. –

+0

Où j'ai mis le code '[super touchesBegan: touches avecEvent: événement];' – Vivek

0

S'il vous plaît vérifier ce code et tester à nouveau je l'espère fonctionne bien.

[super touchesBegan:touches withEvent:event];