How to Make a Core Animation Layer Not Clickable
Core Animation Layers handle mouse clicks using the hitTest:
and containsPoint:
methods. It is common to have layers in the hierarchy that are simply visual effects and shouldn't be clickable. This is very easy to do.
In your CALayer subclass, simply override hitTest:
and containsPoint:
as follows:
- (CALayer *)hitTest:(CGPoint)thePoint {
return nil;
}
- (BOOL)containsPoint:(CGPoint)p {
return NO;
}
That's it! The layer can exist in the hierarchy of clickable layers without being itself clickable and interfering in the user input.