@IBAction func popView(_ sender: UIButton) {
let popView = PopView()
popView.setVisible()
popView.animateView(view: popView.contentView)
}
popViewはビューをいくつか持つviewcontrollerで、popViewはinit()でこれらのビューを設定するためにsetup()を使用します。UITapGestureRecognizerが別のコントローラに属しているビューでは機能しない
func setup(){
view.frame = UIScreen.main.bounds
baseView.frame = view.frame
baseView.backgroundColor = UIColor.black
//baseView.alpha = appearence.backgroundAlpha
view.addSubview(baseView)
contentView.backgroundColor = UIColor.white
contentView.layer.cornerRadius = appearence.cornerRadius
contentView.frame = CGRect(x: 10, y: 10, width: appearence.width, height: appearence.height)
contentView.layer.masksToBounds = true
contentView.center = CGPoint(x: self.view.bounds.midX , y: self.view.bounds.midY)
baseView.addSubview(contentView)
headView.frame = CGRect(x: 0, y: 0, width: contentView.bounds.width, height: contentView.bounds.height/2)
headView.backgroundColor = UIColorFromRGB(0xE64D4D)
contentView.addSubview(headView)
headImageView.image = UIImage(named: headImage)
headImageView.contentMode = .center
headImageView.frame.size = headImageView.image!.size
headImageView.center = CGPoint(x: headView.bounds.midX, y: headView.bounds.midY)
headView.addSubview(headImageView)
let recognizer = UITapGestureRecognizer(target: self, action: #selector(self.hide(_:)))
recognizer.numberOfTapsRequired = 1
contentView.addGestureRecognizer(recognizer)
print(String(describing: contentView.gestureRecognizers))
}
contentViewがtapgesturerecognizerを持っていますが、popViewが
@IBAction func popView(_ sender: UIButton) {
let popView = PopView()
popView.setVisible()
popView.animateView(view: popView.contentView)
}
func setVisible(){
let rootView = UIApplication.shared.keyWindow! as UIWindow
rootView.addSubview(self.view)
}
func animateView(view: UIView){
view.center = CGPoint(x: self.view.bounds.midX, y: self.view.bounds.minY - view.bounds.midY)
UIView.animate(withDuration: 0.2, animations: {
view.center = CGPoint(x: self.view.bounds.midX , y: self.view.bounds.midY + 50)
}, completion: {(finished) -> Void in
UIView.animate(withDuration: 0.1, animations: {
view.center = CGPoint(x: self.view.bounds.midX , y: self.view.bounds.midY)
})
})
}
のViewControllerクラスに以下のコードによって作成された
func hide(_ recognizer: UITapGestureRecognizer){
self.view.removeFromSuperview()
}
私はタップしたとき、それは動作しませんpopViewが正しく表示されますが、contentViewタップジェスチャーに応答しません。なぜ?助けてください〜
thanku !!!もう一つは、uが私はpopview内のコードを置けば – InvisibleMike
あなたは、私は非常に小さな領域を推測しているコンテンツビュー枠を設定している知っています、画面全体でタップ可能な領域を見つけるのが難しいです。コンテンツビューのサイズを大きくすることも、解決策を何でもすることもできます。 –