 	}
 	
 	open override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {
+		hapticFeedbackFinalize()
 		if canAutoHide {
 			visible = false
 		}
 	}
 	
 	internal func _handleGesture(_ gesture: UIGestureRecognizer) {
+		switch gesture.state {
+		case .ended, .cancelled, .failed:
+			hapticFeedbackFinalize()
+		default:
+			break
+		}
 		let location = gesture.location(in: self)
 		setNewIndex(point: location)
 		if canAutoHide {

				if newIndex != currentIndex {
					currentIndex = newIndex
					delegate?.tableViewIndexChanged(currentIndex, title: currentTitle)
				}
			}
		}

	open weak var delegate: STBTableViewIndexDelegate!
	fileprivate var panGestureRecognizer: UIPanGestureRecognizer!
	fileprivate var tapGestureRecognizer: UITapGestureRecognizer!
	fileprivate var feedbackGenerator: AnyObject?
	
	open var currentIndex = 0
	open var currentTitle: String { return titles[currentIndex] }
