UIPanGesture正在工作,但UITapGesture不工作在UIView
问题描述:
我有一个小的看法,我想要在屏幕上移动并且可以移动。所以,我想补充一个UIPanGestureRecognizer移动它,和UITapGestureRecognizer接收点击事件,像这样:UIPanGesture正在工作,但UITapGesture不工作在UIView
let panner = UIPanGestureRecognizer(target: self, action: #selector(panDidFire(panner:)))
playerViewController.view.addGestureRecognizer(panner)
let tapper = UITapGestureRecognizer(target: self, action: #selector(viewTapped(tapper:)))
playerViewController.view.addGestureRecognizer(tapper)
我创建在同一个文件的操作
func viewTapped(tapper: UITapGestureRecognizer){
fadeInButtons()
}
func panDidFire(panner: UIPanGestureRecognizer) {
let offset = panner.translation(in: view)
panner.setTranslation(CGPoint.zero, in: view)
var center = playerViewController.view.center
center.x += offset.x
center.y += offset.y
playerViewController.view.center = center
}
的panDidFire()函数被调用时,用户平移,但viewTapped()函数根本不被调用。
这有什么窍门吗?我究竟做错了什么?还有另外一种方法可以解决这个问题吗?
我使用的Xcode 8与SWIFT 3
答
你必须设置为您识别与上查看其他手势识别工作。请使用UIGestureRecognizerDelegate方法
gestureRecognizer(gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWithGestureRecognizer otherGestureRecognizer: UIGestureRecognizer) -> Bool
{
return true
}
+0
工作感谢你! – cpatmulloy
手势是否相互冲突?打电话给panner。 requireGestureRecognizerToFail(tapper)'确保tapper第一次获得手势。 – NRitH
大部分这看起来不错,但为什么你的手势命名(通过“让”)与你的方法相同?另外,请发布方法代码 - 它可以帮助我们进行调试。 – dfd
panner.requireGestureRecognizerToFail(tapper)似乎没有做任何事情。我会尝试更改方法名称,然后编辑帖子以包含方法代码。 – cpatmulloy