我尝试在collectionView单元格中向UITapGesture
添加UIStackView
,但每次我的应用程序崩溃时。 (所有IBOutlets
都已连接)这就是我在这里做错了什么?
let fGuesture = UITapGestureRecognizer(target: self, action: #selector(self.showF(_:)))
cell.fstackView.addGestureRecognizer(fGuesture)
func showF(sender: AnyObject){
print(111)
}
答案 0 :(得分:6)
启用了stackview以进行触摸吗? 尝试设置Userinteraction Parameter
cell.fstackView.isUserInteractionEnabled = true
答案 1 :(得分:3)
如果应用因<script>
alert("{{Constant X}}");
</script>
而崩溃 - 您可能需要在将手势识别器添加到堆栈视图之前添加一些延迟。
如果要访问集合视图单元子类的init或集合视图的委托方法中的堆栈视图属性,则堆栈视图可能尚未初始化。尝试使用计时器或GCD添加0.1秒的延迟,它应该可以正常工作......
fatal error: unexpectedly found nil while unwrapping an Optional value
...
Timer.scheduledTimer(timeInterval: 0.1, target: self, selector: #selector(prepareStackView), userInfo: nil, repeats: false)
答案 2 :(得分:1)
在主线程中设置手势识别器:
DispatchQueue.main.async {
self.view.gestureRecognizers = [self.tapGestureRecognizer]
}
答案 3 :(得分:0)
我有 UIButtons 作为子视图,所以即使我向 UIStackView 添加手势,它也会忽略我的手势。
所以我添加了代码
button.isUserInteractionEnabled = false
让 UIStackView 接收到我的触摸。