2012-06-19 31 views
10

quería encontrar la manera de hacer lo siguiente:UITableView toque y mantenga + arrastrar y soltar

Tengo un UITableView, que entra en el modo de edición cuando los grifos de usuario y posee una de las filas

vez entra al modo de edición. Necesito que la celda permanezca seleccionada y dé el efecto de salir, debajo del dedo del usuario.

El usuario debería poder arrastrar la celda reventada y reubicarla en otra fila, sin levantar el dedo.

lo que ya tiene en su lugar:

Tengo un gesto reconocedor mucho toque y me puse en la mesa de edición en el selector gesto reconocedor mucho toque.

Sin embargo, para arrastrar la celda, actualmente necesito levantar el dedo y volver a presionar para arrastrar la celda, que no es lo que quiero.

Cualquier ayuda sería apreciada.

+0

posible duplicado de [Reordenar UITableView sin reordenar control] (http://stackoverflow.com/questions/5624730/reordering-uitableview-without-reorder-control) – Senseful

Respuesta

0

En este momento hay una solución alternativa (no es fácil): https://stackoverflow.com/a/7501076/326017.

Y he encontrado fragmento de código aquí: https://github.com/FlorianMielke/FMMoveTableView

"FMMoveTable es una subclase UITableView que ofrece filas en movimiento por simplemente mantenga pulsado un fila apropiada sin tener que cambiar la mesa para que es el modo de edición" - de la descripción

+0

Posiblemente un mejor fragmento aquí: vea https://github.com/bvogelzang/BVReorderTableView. Sin fallas – SwiftArchitect

0

El artículo Reordering a UITableViewCell from any touch point discute este escenario exacto.

Esencialmente, usted haga lo siguiente:

  1. Encuentra la (una clase privada) UITableViewCellReorderControl.
  2. Extiéndalo para abarcar toda la celda.
  3. Esconderlo.
  4. El usuario ahora podrá arrastrar la celda desde cualquier lugar.

Otra solución, Cookbook: Moving Table View Cells with a Long Press Gesture, logra el mismo efecto de la siguiente manera:

  1. Añadir una pulsación larga reconocedor gesto en la vista de tabla.
  2. Crea una instantánea de la celda cuando se arrastra la celda.
  3. A medida que se arrastra la celda, mueva la instantánea y llame al -[UITableView moveRowAtIndexPath:toIndexPath:].
  4. Cuando finalice el gesto, oculte la instantánea de la celda.