         super.touchesCancelled(touches, with: event)
     }
     
+    private func beginTouch(_ touch: UITouch) {
+        currentTouch = touch
+        isHighlighted = true
+        prepareFeedbackGenerator()
+    }
+    
     private func processTouch(_ touch: UITouch) {
         if items.isEmpty {
             return

            return
        }
        currentIndex = idx
        
        if let delegate = self.delegate
            , delegate.responds(to: #selector(TableViewIndexDelegate.tableViewIndex(_:didSelect:at:))) {

    
    override open func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
        if let touch = touches.first , bounds.contains(touch.location(in: self)) {
            beginTouch(touch)
            processTouch(touch)
        }
        super.touchesBegan(touches, with: event)
