         }
     }
     
+    public override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) {
+        super.touchesBegan(touches, withEvent: event)
+        
+        if tapHandler != nil {
+            tapHandler?()
+            tapHandler = nil
+        }
+    }
+    
     public func clearTapHandler() {
         userInteractionEnabled = false
         subtitleLabel?.removeFromSuperview()

    public func addTapHandler(tap: (()->()), subtitle subtitleText: String? = nil) {
        clearTapHandler()
        
        userInteractionEnabled = true
        vibrancyView.contentView.addGestureRecognizer(UITapGestureRecognizer(target: self, action: Selector("didTapSpinner")))
        tapHandler = tap

        if subtitleText != nil {
            subtitleLabel = UILabel()
            if let subtitle = subtitleLabel {

    public class func hide(completion: (() -> Void)? = nil) {
        
        let spinner = SwiftSpinner.sharedInstance
        
        NSNotificationCenter.defaultCenter().removeObserver(spinner)
        
        dispatch_async(dispatch_get_main_queue(), {
