向UIStackView添加点按手势

时间:2016-05-12 17:35:30

标签: ios swift uistackview

我尝试在collectionView单元格中向UITapGesture添加UIStackView,但每次我的应用程序崩溃时。 (所有IBOutlets都已连接)这就是我在这里做错了什么?

 let fGuesture = UITapGestureRecognizer(target: self, action: #selector(self.showF(_:)))
 cell.fstackView.addGestureRecognizer(fGuesture)

 func showF(sender: AnyObject){
        print(111)
    }

4 个答案:

答案 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 接收到我的触摸。