2017-09-20 1 views
2

Est-ce que quelqu'un sait pourquoi l'exemple Apple de Adopter le glisser-déposer dans une vue de table ne fonctionne pas sur iPhone?Adopter le glisser-déposer dans une vue de table ne fonctionne pas sur iPhone

Procédure pour reproduire:

  1. Code de téléchargement de https://developer.apple.com/documentation/uikit/drag_and_drop/adopting_drag_and_drop_in_a_table_view
  2. projet ouvert et changer la cible de déploiement -> Devices Universal.
  3. Lancer l'application sur iPhone (simulateur).
  4. Essayez de faire glisser une cellule.

La fonctionnalité glisser-déposer ne fonctionne pas, mais elle doit se comporter de la même manière que sur les appareils iPad. Même la fonction

func tableView(_ tableView: UITableView, itemsForBeginning session: UIDragSession, at indexPath: IndexPath) -> [UIDragItem] 

n'est pas appelée.

Configuration:

  • Xcode version 9.0 (9A235)
  • d'Apple Version Swift 4.0 (swiftlang-900.0.63 clang-900.0.37)
  • Simulator version 10.0 (SimulatorApp-829,6 CoreSimulator-494.13.6)

Répondre

6

UITableView a une propriété d'instance dragInteractionEnabled: Bool.

documentation de Xcode:

La valeur par défaut de cette propriété est vrai sur iPad et faux sur l'iPhone. Si vous définissez la valeur sur true sur iPhone, il est possible de faire glisser le contenu de la vue de table vers une autre application sur iPhone et de recevoir du contenu provenant d'autres applications.

Dans TableViewController.swift, ajoutez

tableView.dragInteractionEnabled = true

dans viewDidLoad() (je l'ai ajouté juste avant le dragDelegate et dropDelegate sont définies, et il semble fonctionner très bien).

+0

Merci pour la solution. J'ai l'intention de faire glisser des éléments uniquement dans les vues de tableau de la même application afin que la documentation reste floue. – Kaktusiarz