UIPanGestureRecognizer не работает на 2 объектах в ограничениях nslayout - PullRequest
1 голос
/ 07 февраля 2020

Мой быстрый код ниже пытается объявить 2 uipangesturerecognizer для 2 разных объектов, а затем добавить 2 разных метода для каждого из этих объектов. Прямо сейчас я могу переместить один объект, но проблема в том, что когда другой объект перемещается, другой объект возвращается в исходное положение. Таким образом, только один объект может изменить свою позицию. Объектами являются бой [0] и бой [1].

import UIKit

class ViewController: UIViewController {

var pic = UIImageView()
var draw = UIView()
let fight = (0..<10).map { _ in UIImageView() }
var g2 = UIPanGestureRecognizer()
var g3 = UIPanGestureRecognizer()

override func viewDidLoad() {
    super.viewDidLoad()

    fight[0].image  = UIImage(named: "a.png")
    fight[1].image  = UIImage(named: "a.png")





    fight.forEach{
        $0.isUserInteractionEnabled = true
    }

    g2 = UIPanGestureRecognizer(target: self, action: #selector(ViewController.g1Method))
    fight[0].addGestureRecognizer(g2)

    g3 = UIPanGestureRecognizer(target: self, action: #selector(ViewController.g2Method))
    fight[1].addGestureRecognizer(g3)



    fight.forEach{
        $0.backgroundColor = .clear
        view.addSubview($0)
        $0.translatesAutoresizingMaskIntoConstraints = false
    }


    [pic,draw].forEach{
        $0.backgroundColor = .red
        view.addSubview($0)
        $0.translatesAutoresizingMaskIntoConstraints = false

    }
    // Do any additional setup after loading the view.
    NSLayoutConstraint.activate ([




        fight[0].trailingAnchor.constraint(equalTo: view.trailingAnchor, constant :0),
        fight[0].topAnchor.constraint(equalTo: view.topAnchor, constant : 50),

        fight[0].heightAnchor.constraint(equalTo: view.heightAnchor, multiplier: 0.10, constant: 0),
        fight[0].widthAnchor.constraint(equalTo: view.widthAnchor, multiplier: 0.10, constant: 0),
        fight[0].leadingAnchor.constraint(equalTo: view.leadingAnchor, constant : 0),




        fight[1].topAnchor.constraint(equalTo: view.topAnchor, constant : 50),

        fight[1].heightAnchor.constraint(equalTo: view.heightAnchor, multiplier: 0.10, constant: 0),
        fight[1].widthAnchor.constraint(equalTo: view.widthAnchor, multiplier: 0.10, constant: 0),
        fight[1].leadingAnchor.constraint(equalTo: fight[0].trailingAnchor, constant : 0),





    ])


}

@objc func g1Method(_ sender: UIPanGestureRecognizer){


    self.view.bringSubviewToFront(sender.view!)
    let tranistioon = sender.translation(in: self.view)
    sender.view!.center = CGPoint(x: sender.view!.center.x + tranistioon.x, y: sender.view!.center.y + tranistioon.y)
    sender.setTranslation(CGPoint.zero,in: self.view)    }

@objc func g2Method(_ sender: UIPanGestureRecognizer){


    self.view.bringSubviewToFront(sender.view!)
    let tranistioon = sender.translation(in: self.view)
    sender.view!.center = CGPoint(x: sender.view!.center.x + tranistioon.x, y: sender.view!.center.y + tranistioon.y)
    sender.setTranslation(CGPoint.zero,in: self.view)    }




}
...