UIButtonを追加したカスタムクラスのオーバーレイがあります。ボタンをクリックすると、メソッドが呼び出されるべきである。UITapGestureRecognizerがカスタムクラス内で動作していない(ビューコントローラではない)
class Overlay {
func show(onView view: UIView, frame: CGRect) {
let dismissButton = UIButton()
dismissButton.frame = frame
dismissButton.setTitle("Dismiss", for: .normal)
dismissButton.setTitleColor(Project.Color.failure, for: .normal)
dismissButton.titleLabel?.font = Project.Typography.lightFont.withSize(22)
view.addSubview(dismissButton)
dismissButton.isUserInteractionEnabled = true
let tap = UITapGestureRecognizer(target: self, action: #selector(dismissBtnTapped(tap:)))
dismissButton.addGestureRecognizer(tap)
}
@objc func dismissBtnTapped(tap: UITapGestureRecognizer) {
print("TEST")
}
私はそのビューとフレームを渡し、私のViewController内show(...)
を呼び出します。
ただし、tapGestrueRecognizerは機能しません。何か案は?
ありがとうございます。
編集:このコードを直接私のViewControllerの中に入れてみました。その後、それは動作します。でも、私はなぜわからないんだけど、それは私のために実行可能なソリューションではないですが、残念ながら:/
編集2: 私はそれを呼び出す方法ですそれ:
let overlay = Overlay()
overlay.show(onView: self.view, frame: CGRect(x: 0, y: 0, width: view.bounds.width, height: 150))
ボタンに 'tapgesturerecognizer'を追加する理由あなたはそれのためのアクションメソッドを直接書くことができます! – Lion
オーバーレイをView Controllerにどのように「接続」しますか? – Zico
'dismissButton.addTarget(...)'を試みましたが、うまく動作しませんでした。あなたはそのオーバーレイを「つけて」いるとはどういう意味ですか? – Quantm