【发布时间】:2019-01-21 14:57:15
【问题描述】:
希望将点击手势添加到 UIViews 数组中 - 没有成功。在此阶段似乎无法识别 Tap。
在下面的代码(摘录)中:
在主视图上显示一系列PlayingCardViews(每个UIView)。
集合为一个数组:cardView。
需要能够独立点击每个PlayingCardView(然后能够识别哪个被点击了)。
@IBOutlet private var cardView: [PlayingCardView]!
override func viewDidLoad() {
super.viewDidLoad()
let tap = UITapGestureRecognizer(target: self, action: #selector(tapCard(sender: )))
for index in cardView.indices {
cardView[index].isUserInteractionEnabled = true
cardView[index].addGestureRecognizer(tap)
cardView[index].tag = index
}
}
@objc func tapCard (sender: UITapGestureRecognizer) {
if sender.state == .ended {
let cardNumber = sender.view.tag
print("View tapped !")
}
}
【问题讨论】:
-
那么
tapCard函数是否被调用了?顺便说一句,您还没有使用cardNumber属性。 -
正确@DávidPásztor:'tapCard' 函数未被调用(即,当我在 IB 上点击任何 PlayingCardView 时,控制台上没有打印任何内容。关于 'cardNumber',您也是正确的,尚未使用但打算以后再说。
-
你不能确定函数没有被
print语句没有被执行,因为你将它嵌套在if语句中:) 你应该使用调试器来检查函数实际上是否被调用(或在if语句之外放置一个打印语句),但if语句似乎是不必要的。 -
删除了 if 语句,只保留了函数中的 print。仍然没有打印到控制台。
-
您当前案例中的点击将仅添加到最后一个视图中
标签: ios swift uitapgesturerecognizer