J'essaie de faire en sorte qu'un UICollectionViewCell
se comporte comme un button (c.-à-d., UICollectionViewCell
un dim animé au toucher). J'ai eu l'idée de juste remplir la cellule avec un UIButton
. Le button prend alors soin de l'effet visuel d'être engagé. Mais alors je devrais passer l'événement tactile sur le parent (le UICollectionViewCell
) de sorte que le button ne consum pas simplement l'événement. De cette façon, je pourrais le gérer avec la vue de collection de didSelectItemAtPath
. Le problème ci-dessous est ma tentative de comprendre comment passer l'événement.
Je suis tombé sur cette réponse Objective-C pour passer l'événement tactile sur:
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { [super touchesBegan:touches withEvent:event]; [self.nextResponder touchesBegan:touches withEvent:event]; }
Cependant, je me suis coincé quand j'ai essayé de convertir cela en Swift:
class MyButton: UIButton { override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) { super.touchesBegan(touches, withEvent: event) self.nextResponder() // ??? } }
La méthode nextResponder
ne prend aucun argument, alors comment transmettre les events tactiles?
Je n'ai pas été en mesure d'utiliser les questions SO connexes ( ici et ici ) pour m'aider à comprendre cela.
La méthode nextResponder
renvoie un UIResponder?
facultatif UIResponder?
, vous pouvez donc simplement appeler touchesBegan
sur l'object returnné:
self.nextResponder()?.touchesBegan(touches, withEvent: event)