Alors j'ai regardé partout et je n'ai pas encore trouvé ce que je cherchais.Déclenche une action quand un CALayer est touché?
J'ai une vue, puis une sous-vue de cette vue. Sur cette deuxième vue, je crée CALayers en fonction des coordonnées que je lui donne. Je veux pouvoir toucher n'importe lequel de ces CALayers et déclencher quelque chose.
J'ai trouvé différents morceaux de code qui semblent pouvoir aider, mais je n'ai pas été capable de les implémenter.
Par exemple:
-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event { if ([touches count] == 1) { for (UITouch *touch in touches) {
CGPoint point = [touch locationInView:[touch view]]; point = [[touch view] convertPoint:point toView:nil];
CALayer *layer = [(CALayer *)self.view.layer.presentationLayer hitTest:point];
layer = layer.modelLayer; layer.opacity = 0.5;
} } }
et aussi ce ....
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
UITouch *touch = [touches anyObject];
// If the touch was in the placardView, bounce it back to the center
if ([touch view] == placardView) {
// Disable user interaction so subsequent touches don't interfere with animation
self.userInteractionEnabled = NO;
[self animatePlacardViewToCenter];
return;
}
}
Je suis toujours à peu près un débutant à ce genre de choses. Je me demandais si quelqu'un pouvait me dire comment faire ça. Merci pour toute aide.
pour cette ligne: [self.secondView.layer convertPoint: p toLayer: pointLayer] Je reçois une erreur qui dit: « Type Incompatible pour l'argument 1 de 'containsPoint' –
Vous devez vous assurer que vous passez un CGPoint à containsPoint: Utilisez une variable locale intermédiaire si vous n'êtes pas sûr. –