         
     }
     
+    //  MARK: - GESTURE
+    /// ----------------------------------------------------------------------------------
+    fileprivate func _setUpTapGesture() {
+        let tapGesture = UITapGestureRecognizer(target: self, action: #selector(_handleTapGesture(gesture:)))
+        tapGesture.numberOfTapsRequired = 1
+        tapGesture.numberOfTouchesRequired = 1
+        
+        self.addGestureRecognizer(tapGesture)
+        self._tapGesture = tapGesture
+    }
+    fileprivate func _setUpPanGesture() {
+        
+    }
+    
+    @objc fileprivate func _handleTapGesture(gesture: UITapGestureRecognizer) {
+        
+        switch gesture.state {
+        case .began:
+            break
+            
+        case .changed:
+            /// Dismiss
+            self._dismiss(animated: true)
+            
+            /// Callback
+            self._onTabHandleBlock?()
+            self._onTabHandleBlock = nil
+            
+        case .ended:
+            break
+            
+        case .possible, .cancelled, .failed:
+            break
+
+        }
+    }
+    
     //  MARK: - SHOWING
     /// ----------------------------------------------------------------------------------
     fileprivate func _show() {

    
    fileprivate var _onTabHandleBlock: (() -> Void)?
    
    //  MARK: - INIT
    /// ----------------------------------------------------------------------------------
    init(appearance: HDNotificationAppearance) {

        self.snp.makeConstraints { (maker) in
            maker.top.equalTo(self.appearance.marginTop)
            maker.leading.equalTo(self.appearance.marginLeft)
            maker.trailing.equalTo(-self.appearance.marginRight)
            maker.height.equalTo(self.appearance.sizeHeigth())
        }
    }
