Перемещение нескольких изображений в быстром (UIPanGestureRecognizer) - PullRequest
0 голосов
/ 09 февраля 2019

Я новичок в Swift и Xcode.используя xcode 10 и пытаясь создать приложение, похожее на жужжание, где мне нужно переместить несколько изображений в представлении.Я нашел много о UIPanGestureRecognizer и UITapGestureRecognizer, но все работают на UIImage, который имеет последний addGestureRecognizer, только не для остальных.

Есть ли способ определить, какой UIImageчто я касаюсь, чтобы включить его движение?

Ответы [ 2 ]

0 голосов
/ 09 февраля 2019

Я нашел решение или на самом деле, что я делал неправильно:

Вам нужно определить новую переменную UIPanGestureRecognizer для каждого UIImage, переменная управляет одним объектом за раз.

Спасибо

Вот что сработало

@IBOutlet var imagesToMove: [UIImageView]!


let imagesNames = ["chk", "unchk"]

var gesturePanArray: [UIPanGestureRecognizer] = []
var gestureTapArray: [UITapGestureRecognizer] = []

override func viewDidLoad() {
    super.viewDidLoad()
    var i = 0

    for imageItem in imagesToMove {
        imageItem.image = UIImage(named: imagesNames[0])

        imageItem.isUserInteractionEnabled = true
        let panGesture = UIPanGestureRecognizer(target: self, action: #selector(self.wasDragged(_:)))
        gesturePanArray.append(panGesture)
        imageItem.addGestureRecognizer(gesturePanArray[i])

        let tapGesture = UITapGestureRecognizer(target: self, action: #selector(self.wasTouched(_:)))

        gestureTapArray.append(tapGesture)
        imageItem.addGestureRecognizer(gestureTapArray[i])

        i = i + 1
    }

}

@objc func wasDragged(_ gesture: UIPanGestureRecognizer) {
    let translation = gesture.translation(in: self.view)
    let image = gesture.view

    view.bringSubviewToFront(image!)

    image!.center = CGPoint(x: (image?.center.x)! + translation.x, y: (image?.center.y)! + translation.y)
    gesture.setTranslation(CGPoint.zero, in: self.view)

}

@objc func wasTouched (_ gesture: UITapGestureRecognizer) {

    let imageTag = gesture.view?.tag
    if imagesToMove[imageTag! - 1].image == UIImage(named: imagesNames[0]) {
    imagesToMove[imageTag! - 1].image = UIImage(named: self.imagesNames[1])
    } else {
     imagesToMove[imageTag! - 1].image = UIImage(named: self.imagesNames[0])
    }
}

}

0 голосов
/ 09 февраля 2019
  1. Для каждого просмотра изображения добавьте тег (при необходимости ведите словарь тегов и изображений)
  2. В вашем распознавателе жестов получите представление изображения, к которому обращается пользователь.
  3. Получите тег этого представления, чтобы идентифицировать изображение и соответственно идентифицировать изображение.
...