     
     
     @objc fileprivate func complete() {
-        timer?.invalidate()
-        timer = nil
+        self.stopTimer()
         self.delegete?.cameraComplete(hoopButton: self, type: self.progress < CGFloat(TLStoryConfiguration.minRecordingTime) ? .photo : .video)
         percent = 0
         progress = 0

        percent = totalPercent * progress
        
        if progress > CGFloat(TLStoryConfiguration.maxRecordingTime) {
            self.complete()
        }
        self.setNeedsDisplay()
    }

        timer?.add(to: RunLoop.current, forMode: RunLoopMode.commonModes)
    }
    
    fileprivate func stopTimer() {
        timer?.isPaused = true
        timer?.invalidate()
        timer = nil
    }
    
    @objc fileprivate func draggedAction(sender:UIButton, event:UIEvent) {
        let touch = (event.allTouches! as NSSet).anyObject() as! UITouch
        let point = touch.location(in: self)
