2012-06-19 10 views
10

Volevo trovare il modo di effettuare le seguenti operazioni:UITableView toccare e tenere premuto + drag and drop

Ho un UITableView, che entra in modalità di modifica quando l'utente tocca e tiene una delle righe

volta entra in modalità modifica Ho bisogno che la cella rimanga selezionata e dia l'effetto di scoppiare, sotto il dito dell'utente.

L'utente deve essere in grado di trascinare la cella estratta e riposizionarla su un'altra riga, senza sollevare il dito.

Quello che già in atto:

ho un rubinetto lungo gesto di riconoscimento e ho impostato la tabella in modifica nel lungo rubinetto selettore gesto riconoscitore.

Tuttavia per trascinare la cella al momento ho bisogno di alzare il dito e toccare nuovamente per trascinare la cella, che non è quello che voglio.

Qualsiasi aiuto sarebbe apprezzato.

+0

possibile duplicato di [Riordinamento di UITableView senza riordino del controllo] (http://stackoverflow.com/questions/5624730/reordering-uitableview-without-reorder-control) – Senseful

risposta

0

Al momento attuale è disponibile una soluzione alternativa (non abbastanza semplice): https://stackoverflow.com/a/7501076/326017.

E ho trovato frammento di codice qui: https://github.com/FlorianMielke/FMMoveTableView

"FMMoveTable è una sottoclasse UITableView che fornisce righe movimento di sufficiente tenere premuto una riga appropriata senza spegnere il tavolo alla sua modalità di modifica" - dalla descrizione

+0

Forse uno snippet migliore qui: vedere https://github.com/bvogelzang/BVReorderTableView. Nessun problema – SwiftArchitect

0

L'articolo Reordering a UITableViewCell from any touch point discute questo scenario esatto.

In sostanza si eseguono le seguenti:

  1. Trova la (una classe privata) UITableViewCellReorderControl.
  2. Espandilo in modo che si estenda all'intera cella.
  3. Nascondilo.
  4. L'utente sarà ora in grado di trascinare la cella da qualsiasi posizione.

Un'altra soluzione, Cookbook: Moving Table View Cells with a Long Press Gesture, ottiene lo stesso effetto nel modo seguente:

  1. Aggiungi una pressione prolungata gesto riconoscitore sulla vista tabella.
  2. Creare un'istantanea della cella quando la cella viene trascinata.
  3. Mentre la cella viene trascinata, spostare l'istantanea intorno e chiamare lo -[UITableView moveRowAtIndexPath:toIndexPath:].
  4. Al termine del gesto, nascondere l'istantanea della cella.