将 UITapGestureRecognizer 添加到 UIControl
Posted
技术标签:
【中文标题】将 UITapGestureRecognizer 添加到 UIControl【英文标题】:Adding UITapGestureRecognizer to the UIControl 【发布时间】:2017-04-25 22:37:25 【问题描述】:我有一个以编程方式创建的滑块类 (class Slider: UIControl
),我想添加一个双击手势以将其调整为默认设置。不幸的是,我无法像以前在 SpriteKit 中那样实现 UITapGestureRecognizer。
部分代码:
class Slider: UIControl
...
let doubleTap : UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(doubleTapped))
...
init()
...
doubleTap.numberOfTapsRequired = 1
addGestureRecognizer(doubleTap)
func doubleTapped()
print("double tapped")
现在我只想实现手势识别器,然后添加我需要做的事情。我还实现了 touchesMoved 和 touchesBegan。
【问题讨论】:
首先let中的初始化选择器不起作用,此时对象还没有完全初始化,将其移到init中。然后尝试使用delegate来判断未调用selector的原因,可能是某些系统手势识别器取了你的事件。 为什么init
和doubleTapped
方法在类之外而不是类的一部分?
@rmaddy 这是一个错误,init 和 doubleTapped 在类内
那么请编辑您的问题以显示正确的代码。
@vojer 如何在这里使用委托? doubleTap.delegate = self
返回错误:无法将类型 'Slider' 的值分配给类型 'UIGestureRecognizerDelegate'
【参考方案1】:
好的,答案很简单,不需要委托。
class Slider: UIControl
...
init()
...
let doubleTap : UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(doubleTapped))
doubleTap.numberOfTapsRequired = 1
addGestureRecognizer(doubleTap)
func doubleTapped()
print("double tapped")
【讨论】:
以上是关于将 UITapGestureRecognizer 添加到 UIControl的主要内容,如果未能解决你的问题,请参考以下文章
将 NSDictionary 作为参数传递给 UITapGestureRecognizer
将 UITapGestureRecognizer 添加到 UIControl
将 UITapGestureRecognizer 连接到 UIView
将 UITapGestureRecognizer 触摸传递到底层 UITableViewCell