我下面的快速代码声明了两个变量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)
}
}
您应该修改自己的欲望。如果您的目标是两个可拖动的图像视图,则两个平移手势识别器是正确的。组合它们不会获得任何好处,实际上会使事情变得更复杂。
当手势识别器应为局部变量时,它们似乎是实例属性。但这只是移动声明的问题,仍然需要两个声明。