Domanda

Ho cercato di trovare una soluzione facile per la seguente. Ho una visione principale che detiene una piastrella. Voglio trascinarlo nel corso di un UITableView. Potrei programmare il pick and trascinare già con UIGestureRecognizer.

Ora il mio problema è come posso rilevare all'interno della vista tabella che v'è un elemento che va ad essere trascinato sopra di esso. Per esempio io voglio evidenziare la riga data quando la piastrella viene spostato sopra di esso.

Ho provato ad aggiungere le touchesMoved / cominciarono / eventi Ended al viewCell. Essi non ottiene incendi quando sto trascinando la tessera su di esso (in altre parole, la piastrella si nasconde una parte del viewCell sotto il mio dito). Ottengono sparato quando non c'è piastrelle trascinato sopra.

Esiste un metodo hitTest efficace per questo?

Grazie.

È stato utile?

Soluzione

Ci sono un sacco di problemi di interfaccia utente qui che dovrebbero essere affrontati.

  • In generale, Drag and drop su iPhone è una cattiva idea. E 'molto difficile da fare, e ottenere un feedback sta per essere problematico, perché il vostro dito sarà ostacolare l'operazione di trascinamento
  • utilizzando cella selezionata della tabella per indicare 'dropability' potrebbe farti respinta dai revisori app store; è per indicare "Ho scelto questa cella", non "Ti lascio qualcosa su di esso"

Detto questo, probabilmente si vorrà gestire tutti gli eventi tocco nella vista 'sorgente', e inviare i messaggi di tabella da lì, piuttosto che cercare di destreggiarsi tra i messaggi in giro. Una volta che il -touchesBegan: withEvent: è stato definito in una vista, tutte le successive -touchesMoved: withEvent: e -touchesEnded: withEvent: verrà inviato a quella vista per il ciclo di vita di quel tocco; spedizioni in giro confonderà il check out per tutte le persone coinvolte.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top