     open override func touchesCancelled(_ touches: Set<UITouch>, with event: UIEvent?) {
         super.touchesCancelled(touches, with: event)
         guard allowsSelection else {
+            touchedCell?.setHighlighted(false, animated: true)
+            touchedCell = nil
             return
         }
         for cell in cells where cell.isEnabled  {

    open override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) {
        super.touchesMoved(touches, with: event)
        guard allowsSelection else {
            return
        }
        guard let touch = touches.first else {

    open override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {
        super.touchesEnded(touches, with: event)
        guard allowsSelection else {
            touchedCell?.setHighlighted(false, animated: true)
            touchedCell = nil
            return
        }
        for cell in cells where cell.isEnabled {
