Для определения нажатия на CALayer можно использовать несколько подходов:
Использование hitTest(_:event:) в представлении (View):
UIView имеет метод hitTest(_:with:), который рекурсивно проходит по иерархии подпредставлений и возвращает самое глубокое подпредставление, содержащее заданную точку.hitTest(_:with:) в пользовательском представлении для более детального контроля или для обработки нажатий непосредственно на подслоях, не связанных с представлениями.Преобразование координат с помощью convert:
UIView) у вас есть координаты касания относительно окна (UIWindow) или представления.convert(_:from:) или convert(_:to:) CALayer.bounds) или использовать более специфические проверки, например, contains(_:).Прикрепление UITapGestureRecognizer к представлению:
UITapGestureRecognizer к UIView, с которым связан слой.Создание UIView для каждого интерактивного слоя:
UIView.UIView в соответствии со слоем.UITapGestureRecognizer) или переопределить методы обработки событий касания (touchesBegan, touchesEnded и т.д.) в этом представлении.UIView специально предназначен для этого.Пример использования hitTest в UIView:
swift
Пример использования преобразования координат в обработчике жеста:
swift