Получение метки от устройства распознавания жестов - PullRequest
0 голосов
/ 12 марта 2019

У меня есть массив UIImageView и я программно назначил им распознаватели жестов касания.

    myImages.forEach{ UIImageView in
        let tap = UITapGestureRecognizer(target: self, action: #selector(handleTap(gesture:)))
        tap.numberOfTapsRequired = 1
        tap.delegate = self
        view.addGestureRecognizer(tap)
        }

Какой лучший способ назначить отправителя каждому (или определить, какое изображение было прослушано другим способом)? Я безуспешно пытался

var tag = sender.view!.tag

Спасибо!

Ответы [ 2 ]

1 голос
/ 12 марта 2019

здесь нужно выполнить два шага,

шаг 1

присвойте tags для просмотра изображений перед добавлением в массив myImages.

шаг 2

получить тег из массива изображения и назначить каждому вашему жесту

myImages.forEach{  
    let tap = UITapGestureRecognizer(target: self, action: #selector(handleTap(_:)))
        tap.numberOfTapsRequired = 1
        tap.view?.tag =  $0.tag
        $0.isUserInteractionEnabled = true
        $0.addGestureRecognizer(tap)
    }

и обрабатывать функционал как

  @objc func handleTap(_ sender: UITapGestureRecognizer) {
     guard let getTag = sender.view?.tag else { return }
    print("getTag == \(getTag)")
}
0 голосов
/ 12 марта 2019

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

myImages.forEach { image in
let tap = UITapGestureRecognizer(block: {[weak self] _ in
       //Do your stuff here
       //print("Image Tapped:", image.debugDescription)
}, delegate: self)
tap.numberOfTapsRequired = 1
image.addGestureRecognizer(tap)
}
...