我有一个小 View ,我想在屏幕上移动并可点击。所以我添加了一个 UIPanGestureRecognizer 来移动它,并添加了一个 UITapGestureRecognizer 来接收点击事件,如下所示:
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)
我在同一个文件中创建 Action
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() 函数。
这有什么技巧吗?我究竟做错了什么?还有另一种方法吗?
我正在使用带有 swift 3 的 Xcode 8
最佳答案
您必须设置您的识别器才能与 View 上的其他手势识别器一起工作。请使用 UIGestureRecognizerDelegate 方法
gestureRecognizer(gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWithGestureRecognizer otherGestureRecognizer: UIGestureRecognizer) -> Bool
{
return true
}
关于ios - Pan Gesture 正在工作,但 ONTapGesture 不在 UIView 上工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41173440/