                     : (_offsetPositionsUpToEndIndex[titleItems.index(after: index)] - offsetPosition)
                 
                 guard fabs(offsetPosition - offsetX) <= offsetPositionDelta else {
-                    titleItem.selected = false; continue
+                    DispatchQueue.main.async { titleItem.selected = false }; continue
                 }
                 
                 let relativeOffsetX = selected

                
                self.didUpdateSelectedIndex?(transitionPercent > 0.5 ? (selected ? index : titleItems.index(after: index)) : (selected ? titleItems.index(before: index) : index))
            }
        } }
    }
}

        guard !scrollView.isDragging, !scrollView.isTracking, !scrollView.isDecelerating else { return }
        let offsetX = scrollView.contentOffset.x
        
        autoreleasepool { _transitionQueue.async { autoreleasepool { [unowned self] in
            for (index, titleItem) in titleItems.enumerated() {
                let offsetPosition      = _offsetPositionsUpToEndIndex[index]
                let selected            = (offsetPosition >= offsetX)
