我想为每个Viewcontroller实现一个手势识别器。
以下代码正在运行:
class ViewController: UIViewController {
func draggedView(sender:UIPanGestureRecognizer){
// do stuff
}
override func viewDidLoad() {
super.viewDidLoad()
let panRec = UIPanGestureRecognizer()
panRec.addTarget(self, action: #selector(ViewController.draggedView(_:)))
self.view.addGestureRecognizer(panRec)
self.view.userInteractionEnabled = true
}
}
现在我想给这个平移手势多一点动态感/抽象感
class Tools : NSObject {
var currentViewController: UIViewController?
func addPanToViewController(viewcontroller: UIViewController) {
currentViewcontroller = viewcontroller
if let currentViewcontroller = currentViewcontroller {
let panRec = UIPanGestureRecognizer()
panRec.addTarget(self, action: #selector(draggedView(_:)))
currentViewcontroller.view.addGestureRecognizer(panRec)
currentViewcontroller.view.userInteractionEnabled = true
}
}
func draggedView(sender:UIPanGestureRecognizer) {
//never called
}
}
我像这样在ViewController-Class中调用代码:
let sidemenu = Tools()
sidemenu.addPanToViewController(self)
但是什么也没发生。没有错误,但是没有手势在起作用。使用调试器,我看到该手势已添加。因此,每个代码都将执行。
我想在我的Tools类中执行draggedView。
我真的不明白我的问题在哪里?
我认为,如果您希望此方法有效,则必须使Tools类成为单例:
static let sharedInstance = Tools()
然后在addPanToViewController
:
panRec.addTarget(Tools.sharedInstance, action:#selector(draggedView(_:)))
在您的viewController
:
Tools.sharedInstance.addPanToViewController(self)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句