Итак, я искал все, и я не совсем нашел то, что искал.Запустить действие при касании CALayer?
У меня есть представление, а затем подзаголовок этого вида. На этом втором представлении я создаю CALayers в зависимости от того, какие координаты я ему даю. Я хочу иметь возможность касаться любого из этих CALayers и запускать что-то.
Я нашел различные фрагменты кода, которые выглядят так, как будто они могут помочь, но я не смог их реализовать.
Например:
-(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;
} } }
, а также это ....
- (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;
}
}
Я до сих пор в значительной степени новичок в этой вещи. Мне было интересно, может ли кто-нибудь сказать мне, как это сделать. Спасибо за любую помощь.
для этой строки: [self.secondView.layer convertPoint: р toLayer: pointLayer] Я получаю сообщение об ошибке, которая говорит: «несовместимый тип для аргумента 1 из 'containsPoint' Любая идея, что я должен делать или что происходит не так? –
Вам нужно убедиться, что вы передаете CGPoint в containsPoint. Используйте промежуточную локальную переменную, если вы не уверены. –