我有两个标签,Label1和Label2。我想通过创建两个标签的UITTapRecognizer创建UITTapRecognizer,以使用传递参数的选择器来调用同一个函数,从而使打印出哪个标签的功能单一。下面是完成此操作的漫长方法,虽然比较麻烦,但可以正常工作。如果我知道如何将参数(Int)传递给选择器,那将是一个更干净的选择。
let topCommentLbl1Tap = UITapGestureRecognizer(target: self, action: #selector(DiscoverCell().doubleTapTopComment1)) topCommentLbl1Tap.numberOfTapsRequired = 2 topCommentLbl1.userInteractionEnabled = true topCommentLbl1.addGestureRecognizer(topCommentLbl1Tap) let topCommentLbl2Tap = UITapGestureRecognizer(target: self, action: #selector(DiscoverCell().doubleTapTopComment2)) topCommentLbl2Tap.numberOfTapsRequired = 2 topCommentLbl2.userInteractionEnabled = true topCommentLbl2.addGestureRecognizer(topCommentLbl2Tap) func doubleTapTopComment1() { print("Double Tapped Top Comment 1") } func doubleTapTopComment2() { print("Double Tapped Top Comment 2") }
有没有办法修改选择器方法,以便我可以做类似的事情
func doubleTapTopComment(label:Int) { if label == 1 { print("label \(label) double tapped") }
简短答案:否
选择器由调用UITapGestureRecognizer,您对其选择的参数没有任何影响。
UITapGestureRecognizer
但是,您可以做的是查询识别器的view属性以获取相同的信息。
view
func doubleTapComment(recognizer: UIGestureRecognizer) { if recognizer.view == label1 { ... } else if recognizer.view == label2 { ... } }