在我的程序中,运行“ newFrees”功能时,它应该激活单击某些标签的功能。根据用户单击的标签,它应该执行不同的操作。我已经到了可以按下一个标签时让它运行一个函数的地步,但是我不知道如何使该函数识别哪个标签调用了它。有什么方法可以识别调用它的标签的名称?
func newFrees() -> Void {
BM1.isUserInteractionEnabled = true
BT2.isUserInteractionEnabled = true
let tap1 = UITapGestureRecognizer(target: self, action: #selector(ViewController.tapFunction))
let tap2 = UITapGestureRecognizer(target: self, action: #selector(ViewController.tapFunction))
BM1.addGestureRecognizer(tap1)
BT2.addGestureRecognizer(tap1)
}
...
@objc func tapFunction(sender:UITapGestureRecognizer) {
print("tap working")
}
// BM1和BT2是标签。
还有,有没有一种方法不必使用“ let tap1”和“ let tap2”?每当我将其定义为“ tap”,然后将其添加到BM1和BT2时,BT2都可以工作,但BM1则不行。
答案 0 :(得分:1)
您可以尝试
IonicStorageModule.forRoot()
您必须为每个对象创建一个tap实例,创建一个tap实例并将其添加到2个对象中,否则最后一个添加到
对象的对象将处于活动状态@objc func tapFunction(sender:UITapGestureRecognizer) {
if bm1 == sender.view {
print("bm1 clicked")
}
else {
print("bt2 clicked")
}
}
答案 1 :(得分:0)
您可以尝试使用这样的标签。...
func newFrees() -> Void {
BM1.isUserInteractionEnabled = true
BT2.isUserInteractionEnabled = true
BTM1.tag = 1
BTM2.tag = 2
let tap1 = UITapGestureRecognizer(target: self, action: #selector(ViewController.tapFunction))
BM1.addGestureRecognizer(tap1)
BT2.addGestureRecognizer(tap1)
}
@objc func tapFunction(sender:UITapGestureRecognizer) {
print("tap working")
print("tap working")
guard let label = sender.view as? UILabel else { return }
switch label.tag {
case 1:
//DO stuff with label 1
case 2:
//Do Stuff with label 2
default:
break
}
}
}