       cell.configureCell(item: item, localizedName: localizer.getLocalizedName(item.name))
 
 #if os(tvOS)
-      CellHelper.shared.addTapGestureRecognizer(view: cell, target: self, action: #selector(self.tapped(_:)), pressType: .select)
-
-      CellHelper.shared.addTapGestureRecognizer(view: cell, target: self, action: #selector(self.tapped(_:)), pressType: .playPause)
+      let longPressGesture = UILongPressGestureRecognizer(target: self, action: #selector(self.longPressed(_:)))
+
+      longPressGesture.allowedPressTypes = [NSNumber(value: UIPressType.select.rawValue), NSNumber(value: UIPressType.playPause.rawValue)]
+
+      cell.addGestureRecognizer(longPressGesture)
+
+      let doubleTapGesture = UITapGestureRecognizer(target: self, action: #selector(self.doubleTapPressed(_:)))
+      doubleTapGesture.numberOfTapsRequired = 2
+
+      cell.addGestureRecognizer(doubleTapGesture)
+  
+      let tapGesture = UITapGestureRecognizer(target: self, action: #selector(self.tapped(_:)))
+      tapGesture.require(toFail: doubleTapGesture)
+  
+      tapGesture.allowedPressTypes = [NSNumber(value: UIPressType.select.rawValue), NSNumber(value: UIPressType.playPause.rawValue)]
+  
+      cell.addGestureRecognizer(tapGesture)
 #endif
 
       if !mobile,

    return name
  }

#if os(tvOS)
  override open func collectionView(_ collectionView: UICollectionView, shouldSelectItemAt indexPath: IndexPath) -> Bool {
    items.cellSelection = indexPath

    let item = items[indexPath.row]

    navigationItem.title = item.name

    processBookmark()

    return true
  }
#endif

  func processBookmark() {
    if let selectedItem = items.getSelectedItem() as? MediaItem {
      func addCallback() {


open class MediaItemsController: UICollectionViewController, UICollectionViewDelegateFlowLayout, ReusableController {
  open static let SegueIdentifier = "Media Items"
  static let BundleId = "com.rubikon.TVSetKit"

  var HeaderViewIdentifier: String { return "MediaItemsHeader" }

