2016-05-12 53 views
4

我试图添加一个UITapGesture到一个UIStackView在一个collectionView单元中,但每次我做我的应用程序崩溃。 (所有IBOutlets已连接)这里有什么我在这里做错了吗?添加水龙头手势到UIStackView

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

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

在'#selector(self.'变化'self'到你的班级名称 –

+0

向我们展示你的崩溃看起来如何(控制台输出) – osxdirk

+0

如果你使用的是Swift 4,你需要showF上的@objc,并且showF应该包含一个_作为参数。 –

回答

3

是启用了触摸的堆栈视图吗? 如果不是,请添加。

cell.fstackView.isUserInteractonEnabled = true 
0

如果应用程序崩溃是由于fatal error: unexpectedly found nil while unwrapping an Optional value - 你可能需要增加手势识别到堆栈视图之前添加一些延迟。

如果您正在访问集合视图单元格子类的init或集合视图的委托方法中的堆栈视图属性,那么堆栈视图可能尚未初始化。尝试使用定时器或GCD增加0.1秒的延迟,它应该工作的罚款...

Timer.scheduledTimer(timeInterval: 0.1, target: self, selector: #selector(prepareStackView), userInfo: nil, repeats: false) 

...

@objc func prepareStackView() { 
    let tap = UITapGestureRecognizer(target: self, action: #selector(stackViewTapped)) 
    myStackView.addGestureRecognizer(tap) 
} 
相关问题