CollectionViewセル内のUITapGesture
をUIStackView
に追加しようとしていますが、実行するたびにアプリがクラッシュします。 (すべてIBOutlets
が接続されています)これは私がここで間違っていることですか?
let fGuesture = UITapGestureRecognizer(target: self, action: #selector(self.showF(_:)))
cell.fstackView.addGestureRecognizer(fGuesture)
func showF(sender: AnyObject){
print(111)
}
スタックビューでタッチが有効になっていますか? Userinteractionパラメータを設定してみてください
cell.fstackView.isUserInteractionEnabled = true
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)
}