我有一个控件的两个副本(称为 RatingControl
)。如何编写处理程序,当有人双击它们时,可以在正确的对象上调用这些处理程序?
我有:
@IBOutlet weak var ratingControl: RatingControl!
@IBOutlet weak var ratingControl2: RatingControl!
在TableViewController
内,然后
override func viewDidLoad() {
super.viewDidLoad()
let tapGR = UITapGestureRecognizer(target: ratingControl, action: #selector(RatingControl.doubleTap(_:)))
tapGR.numberOfTapsRequired = 2
self.view.addGestureRecognizer(tapGR)
let tapGR2 = UITapGestureRecognizer(target: ratingControl2, action: #selector(RatingControl.doubleTap(_:)))
tapGR2.numberOfTapsRequired = 2
self.view.addGestureRecognizer(tapGR2)
}
RatingControl.doubleTap(_)
是一个无害的事件处理程序。
当双击第二个评级控件时,将调用 doubleTap
方法,但会在第一个评级控制对象上分派(dispatch)!
我尝试在一个 UITapGestureRecognizer
上设置两个目标,但遇到了同样的问题。
非常感谢!
最佳答案
您需要将手势识别器添加到两个评级控件,而不是 self.view
。
试试这个:
let tapGR = UITapGestureRecognizer(target: self, action: #selector(RatingControl.doubleTap(_:)))
tapGR.numberOfTapsRequired = 2
ratingControl.addGestureRecognizer(tapGR) // ratingControl, not self.view
let tapGR2 = UITapGestureRecognizer(target: self, action: #selector(RatingControl.doubleTap(_:)))
tapGR2.numberOfTapsRequired = 2
ratingControl2.addGestureRecognizer(tapGR2) // ratingControl2, not self.view
关于ios - 如何监听同一 View 中不同控件上的点击手势?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41928196/