Как наложить Recognizer на shapeLayer?


#1

Я через UIBezierPath рисую ShapeLayer, как на него можно наложить Recognizer, или как вообще можно реагировать на нажатие на него?

Код:

let TopPath = UIBezierPath()
TopPath.move(to: CGPoint(x: 50, y: 30))
TopPath.addLine(to: CGPoint(x: backView.bounds.width - 50, y: 30))
TopPath.addQuadCurve(to: CGPoint(x: backView.bounds.width - 30, y: 50), controlPoint: CGPoint(x: backView.bounds.width - 30, y: 30))
TopPath.addLine(to: CGPoint(x: backView.bounds.width - 30, y: backView.bounds.height / 4))
TopPath.addArc(withCenter: CGPoint(x: backView.bounds.width - 50, y: backView.bounds.height / 4) , radius: 20, startAngle: 0, endAngle: .pi / 2.75, clockwise: true)
TopPath.addLine(to: CGPoint(x: 60, y: backView.bounds.height / 2 - 2.5))
TopPath.addArc(withCenter: CGPoint(x: 50, y: backView.bounds.height / 2 - 20), radius: 20, startAngle: .pi / 3, endAngle: .pi, clockwise: true)
TopPath.addLine(to: CGPoint(x: 30, y: 50))
TopPath.addQuadCurve(to: CGPoint(x: 50, y: 30), controlPoint: CGPoint(x: 30, y: 30))

    topLayer.path = TopPath.cgPath

#2

в приведенном коде нет CAShapeLayer.

gesturerecognizer навешивается на uiview, которое содержит данный calayer. https://developer.apple.com/documentation/uikit/uiview/1622533-point
https://developer.apple.com/documentation/coregraphics/cgpath/2427117-contains


#3

может не в тему, но переменные надо называть с маленькой буквы. Если пишите для себя - вопросов нет, но в конторе кодерам такое показывать не прилично. )


#4

И для чего же по вашему мнению я создаю UIBezierPath?
Может посмотрите на последнюю строку?


#5

Просто вы код оформили криво. Не обернули в тег.


#6

А как его обернуть в тег?


#7

Если руками, то я 3 апострофа пишу.
Либо кнопку нажать </>


#8

Спасибо, а на мой вопрос темы ответа нету?)


#9

Не. Я не знаю. Надо SO ковырять.


#10

ответ ужа дали в самом начале.