タップジェスチャをUIViewに追加しようとしていますが、ジェスチャが認識されません。ジェスチャーイベントがUIViewでタップしない
"iconBadgeView"は、パラメータに渡される定義されたサイズのイメージを持つUIViewです。
lazy var cardioVascularIcon : IconBadgeView! = {
let iconBadgeView = IconBadgeView(frame: CGRect(x: 0, y: 0, width: 95, height: 95), data:["big":"db_history"])
let tapEvent = UITapGestureRecognizer(target: self, action: #selector(loadNewView(sender:)))
tapEvent.numberOfTapsRequired = 1
iconBadgeView.translatesAutoresizingMaskIntoConstraints = false
iconBadgeView.isUserInteractionEnabled = true
iconBadgeView.addGestureRecognizer(tapEvent)
}()
は、同じクラスに添付委任者があると機能は以下のように実装されます。
func loadNewView(sender: UITapGestureRecognizer) {
print("Tapped")
}
機能loadNewViewが呼び出さ取得されていません。私はコード内で何が間違っているのか分かりません。誰かが助けることができるならば、どうぞ。
私は以下のようにスーパーにiconBadgeViewを追加してい:
override init(frame: CGRect) {
super.init(frame: CGRect.zero)
addSubview(cardioVascularIcon)
cardioVascularIcon.pinToSuperview([.Top])
cardioVascularIcon.pinToSuperview([.Left], constant: 92)
cardioVascularIcon.pinToSuperview([.Right], constant: 92)
}
'てみましょうtapEvent = UITapGestureRecognizer(ターゲット:自己、アクション:#selector(loadNewView(差出人:))) tapEvent.addTarget(iconBadgeView、アクション:#selector(loadNewView(差出人:))) 'なぜあなたは繰り返していますあなた自身ここに私の友人笑。 'UITapGestureRecognizer()'を意味する 'デフォルトのコンストラクタ'を使ってジェスチャを作成する場合は、セレクタにそのメソッド 'addTarget'を渡す必要がありますが、セレクタとターゲットを必要とするカスタムコンストラクタを使用しているのでそのコードの2行目を持っている: – Lamar
私は重複した行を削除しようとしましたが、それは助けになりません – user2122178
あなたはどのようなエラー/問題がありましたか?あなたのスーパービューに 'iconBadgeView'を追加しましたか? 'translatesAutoresizingMaskIntoConstraints'を無効にしているので、画面に表示されていると思うかもしれませんが、そうでない場合は、これらの制約を追加してください:) – Lamar