Swift: невозможно коснуться вида canvas в ScrollView

#ios #swift

#iOS #swift

Вопрос:

Я пытаюсь создать функцию редактирования изображений в своем приложении. Я следовал этому руководству, чтобы включить возможность масштабирования, и этому руководству для части рисования.

Я реализую часть рисования и понял, что canvas вид не обнаруживает касания, когда он накладывается на scrollView . Текущая иерархия как таковая:

 scrollView -> imageView -> canvas
  

Реализация на данный момент:

 //At the viewController that implements the Canvas UIView
var imageView: UIImageView!
var canvas = Canvas()

override func viewDidLoad() {
    super.viewDidLoad()

    let image = UIImage(named: "testImage")
    imageView = UIImageView(image: image)

    setupCanvas()
}

func setupCanvas() {
    imageView.addSubview(canvas)
    canvas.backgroundColor = UIColor(white: 1, alpha: 0.4)
    canvas.frame = CGRect(x: 0, y: 0, width: 3000, height: 3000)
    canvas.isUserInteractionEnabled = true
}

//At the Canvas class
class Canvas: UIView {

    override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) {
        guard let point = touches.first?.location(in: self) else {return}

        print("Moved", point) //Breakpoint here not called
    }

    override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
        guard let point = touches.first?.location(in: self) else {return}
        print("Began", point) //Breakpoint here not called

    }        
}
  

На данный момент касания, похоже, взаимодействуют с scrollView вместо этого. Есть ли способ вместо этого обнаружить touches в canvas представлении?

Ответ №1:

Хорошо, элементарная ошибка. Это должно быть

 scrollView.addSubview(canvas)
  

вместо этого.