Try this,
@IBAction func PromoCode_btn(_ sender: Any) {
    view_background.backgroundColor = UIColor.black
    view_background.alpha = 0.8
    view_background.translatesAutoresizingMaskIntoConstraints = false
    layoutDic["view_background"] = view_background
    self.view.addSubview(view_background)
    view_background.isHidden = false
    self.view.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "V:|-0-[view_background]-0-|", options: NSLayoutFormatOptions(rawValue: 0), metrics: metricdict, views: layoutDic))
    self.view.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "H:|-0-[view_background]-0-|", options: NSLayoutFormatOptions(rawValue: 0), metrics: metricdict, views: layoutDic))
    let promoHideTap = UITapGestureRecognizer.init(target: self, action: #selector(self.promoCancelAction))
    promoHideTap.delegate = self
    view_background.addGestureRecognizer(promoHideTap)
    _PromoView.translatesAutoresizingMaskIntoConstraints = false
    layoutDic["_PromoView"] = _PromoView
    view_background.addSubview(_PromoView)
    _PromoView.backgroundColor = UIColor.white
    _PromoView.layer.borderColor = UIColor.lightGray.cgColor
    _PromoView.layer.borderWidth = 0.2
    _PromoView.layer.shadowColor = UIColor.gray.cgColor
    _PromoView.layer.shadowOpacity = 0.2
    view_background.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "V:|-200-[_PromoView(300)]", options: NSLayoutFormatOptions(rawValue: UInt(0)), metrics: metricdict, views: layoutDic))
    view_background.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "H:|-250-[_PromoView]-250-|", options: NSLayoutFormatOptions(rawValue: UInt(0)), metrics: metricdict, views: layoutDic))
}
func promoCancelAction()->Void
{
    view_background.isHidden = true
}
func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldReceive touch: UITouch) -> Bool
{
    // Method to recognize whether the tap originated from bg view or table view
    if touch.view!.isDescendant(of: _PromoView)
    {
        return false
    }
    else
    {
        return true
    }
}
Hope this work!