UITapGesture не работает в классе Popup - PullRequest
0 голосов
/ 27 августа 2018

Я создаю Popup class для использования в своем приложении и хочу добавить UITapGestureRecognizer к непрозрачности черного слоя, когда пользователь автоматически нажимает за пределами этого всплывающего окна.Но этот жест не был распознан ... Я показываю вам мой код Popup class

class Popup {

let supView : UIView!
let blackVoile = UIView()

init(superView viewToInsert : UIView){

    self.supView = viewToInsert

    build()
}

private func build(){
    blackVoile.frame = supView.bounds
    blackVoile.layer.backgroundColor = UIColor.black.cgColor

    blackVoile.isUserInteractionEnabled = true
    let closeGesture = UITapGestureRecognizer(target: self, action: #selector(self.close))
    blackVoile.addGestureRecognizer(closeGesture)

}


func show(){
    supView.addSubview(blackVoile)
}

@objc func close(){
    print("close function")
    self.blackVoile.removeFromSuperview()
}
}

. close func никогда не вызывался.И нет никакого другого верхнего слоя над blackVoile UIView

, вот когда я позвонил своему классу:

let newPopup = Popup(superView : self.view)
newPopup.show()

Я новичок, поэтому, возможно, мы не можем добавить жест ккласс, у которого нет экземпляра UIView?

Благодаря вашей помощи.

Ответы [ 2 ]

0 голосов
/ 27 августа 2018

Ваш supView также должен быть userInteractionEnabled.

0 голосов
/ 27 августа 2018

Проблема с вашим opacity.Если мы сделаем любые opacity до zero, то это представление будет считаться скрытым.Итак, ваш tapGesture не работает.

Обновление

var newPopup : Popup!

override func viewDidLoad() {
    super.viewDidLoad()
    newPopup = Popup(superView : self.view)
    newPopup.show()
}
...