Получить различные координаты для прикосновений в Swift - PullRequest
0 голосов
/ 04 ноября 2018

Я пытаюсь получить координаты различных точек при касании в UIView для swift 4. Я видел другой пост, касающийся аналогичной проблемы, но этот код позволяет регистрировать только первое касание. Буду признателен за помощь. Спасибо.

Ответы [ 3 ]

0 голосов
/ 04 ноября 2018

Этот код будет давать вам координаты при каждом прикосновении к экрану. Вы можете проверить это, распечатав или положив прямо на этикетку.

@IBOutlet weak var imageView: UIImageView!
var coordinates = CGPoint.zero

    override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
        if let touch = touches.first{
        coordinates = touch.location(in: imageView)
        print(coordinates)
        textLabel.text = "\(coordinates)"
    }
}
0 голосов
/ 04 ноября 2018

Итак, я также смог найти ответ на свой вопрос: я использовал приведенный ниже код внутри UIViewController, чтобы получить двумерный массив целых чисел при касании в разных местах. Спасибо за помощь.

var positionArray = Array(repeating: Array(repeating: 0, count: 2), count: 10)
    var counter = 0
    override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
        if let touch = touches.first {
            let position = touch.location(in: self.view)
            let locx = Int(position.x)
            let locy = Int(position.y)
                positionArray[counter] = [locx, locy]
                print(positionArray[counter])
                counter = counter + 1
        }
    }
0 голосов
/ 04 ноября 2018

Вы можете реализовать обратный вызов touchesMoved в своем подклассе UIView, чтобы сделать это.

func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?)

Эта функция вызывается повторно, пока продолжается касание.

Вот общая идея:

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

    let location = touch.location(in: self)
    print("x = \(location.x), y = \(location.y)")
}
...