将单独的var UIPanGestureRecognizer合并为一个UIPanGestureRecognizer

问题描述 投票:-1回答:1

我下面的快速代码声明了两个变量pgGesture和sgGesture,然后我也声明了两个变量imageviews。理想情况下,我将声明两个var imageviews和一个UIPanGestureRecognizer都可以在两个视图上使用。在相同的2个imageviews上使用相同的var UIPanGestureRecognizer之前,我尝试过的操作不允许该imageviews移动。我在下面写的是声明两个图像视图并使它们移动的唯一方法。我在想有一种方法可以缩短它。

import UIKit

class ViewController: UIViewController {

    var pg = UIImageView()
    var pgGesture = UIPanGestureRecognizer()

    var sg = UIImageView()
    var sgGesture = UIPanGestureRecognizer()

    override func viewDidLoad() {
        super.viewDidLoad()

        pgGesture = UIPanGestureRecognizer(target: self, action: #selector(ViewController.pgGestureMethod(_:)))
        pg.addGestureRecognizer(pgGesture)

        sgGesture = UIPanGestureRecognizer(target: self, action: #selector(ViewController.pgGestureMethod))
        sg.addGestureRecognizer(sgGesture)
    }

    @objc func pgGestureMethod(_ 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)
    }
}
arrays swift for-loop uipangesturerecognizer
1个回答
0
投票

您应该修改自己的欲望。如果您的目标是两个可拖动的图像视图,则两个平移手势识别器是正确的。组合它们不会获得任何好处,实际上会使事情变得更复杂。

当手势识别器应为局部变量时,它们似乎是实例属性。但这只是移动声明的问题,仍然需要两个声明。

© www.soinside.com 2019 - 2024. All rights reserved.