【发布时间】:2016-12-15 21:14:30
【问题描述】:
我有一个小视图,我想在屏幕上移动并可以点击。所以我添加了一个 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)
我在同一个文件中创建动作
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
【问题讨论】:
-
手势是否相互冲突?致电
panner. requireGestureRecognizerToFail(tapper)以确保敲击者首先获得手势。 -
大部分看起来不错,但为什么你把你的手势(通过“let”)命名为和你的方法一样?另外,请发布方法代码 - 它可以帮助我们调试。
-
panner.requireGestureRecognizerToFail(tapper) 似乎没有做任何事情。我将尝试更改方法名称,并编辑帖子以包含方法代码。
标签: ios swift uiview uigesturerecognizer uitapgesturerecognizer