在CAShapeLayer列表中检测长按

时间:2017-05-01 05:01:46

标签: ios swift uiview core-graphics

我有一个在我的视图中有可见CAShapeLayer的对象列表。

internal class Line {
    var layer = CAShapeLayer()
}

这些显示在UIView类型的对象上。在UIView我有一个longPress手势识别器,可以检测到其中一个line.layers的长按。

这就是我得到的

@objc private func didLongPress(_ sender: UILongPressGestureRecognizer) {
    var selectedLine: Line?
    let touchPoint = sender.location(in: self)
    if sender.state == .began {
        for line in lines {
            if line.layer.contains(touchPoint) == true {
                print("true")
            } else {
                print("false")
            }

        }
    } else if sender.state == .changed {
        for line in lines {
            if line.layer.contains(touchPoint) == true {
                print("true")
            } else {
                print("false")
            }

        }

    } else if sender.state == .ended {
        for line in lines {
            if line.layer.contains(touchPoint) == true {
                print("true")
            } else {
                print("false")
            }

        }

    }
}

毋庸置疑,它只会打印错误。有谁有想法吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

找到解决方案:

line.layer.path?.boundingBox.contains(touchPoint)