Drag & spazzata con cacao su iPhone
Domanda
sto per iniziare una nuova applicazione per iPhone che richiede una certa funzionalità, ma non sono sicuro se è fattibile. Sono disposto a ricerca, ma prima volevo solo sapere se devo almeno prendere in considerazione o meno.
Non ho visto questo in un app prima (che è la mia principale preoccupazione, anche se non ho visto troppe applicazioni dal momento che non possiedo un iPhone), ma un esempio potrebbe essere l'iPhone scorciatoie da pannelli: si può tenere su un app, e poi trascinarlo in un altro pannello, spazzare mentre ancora trascinandolo. Ma questo è l'applicazione di base, è possibile riprodurre qualcosa di simile all'interno di un'applicazione normale?
Ho solo bisogno di essere sicuri che può essere fatto prima di iniziare a scavare, non ho bisogno di esempi di codice o altro, ma se si dispone di alcune risorse esatte che si considera utile, che sarebbe apprezzato.
Grazie!
Soluzione
Sì. Se avete l'istanza sottoclasse UIView personalizzato all'interno di un UIScrollView, il vostro controller della vista ha solo bisogno di impostare l'UIScrollView per ritardare tocchi di contenuti e non permettergli di annullare eventi di tocco.
[scrollView setCanCancelContentTouches:NO];
[scrollView setDelaysContentTouches:YES];
Quando l'utente tocca e tiene nella visualizzazione personalizzata, l'evento va a quel visualizzazione personalizzata, in grado di elaborare gli eventi touch per trascinare un elemento in giro, ma se l'utente fa scorrere rapidamente, scorre la vista.
Altri suggerimenti
Il "pannello" opinione che ti stai riferendo sembra essere un UIPageControl
vista -. anche se, forse, l'incarnazione specifico di questa visione che Apple utilizza per la home page di iPhone può essere personalizzato
Le istanze di vista UIView
generici che si potrebbe toccare e trascinare riceverà gli eventi di tocco. Sovrascrivendo i metodi nella vista, questi eventi possono essere elaborati e passati al controllo della pagina, in modo da dire a "spazzare" tra le pagine.
Se avessi voluto fare quello che stai chiedendo, è così che io possa avvicinarsi. Mi sembra fattibile per me, in ogni caso.
Inizia con questo: Swip da una vista la vista successiva
Provare a usare un UIButton
che tiene traccia del tempo da quando lo stato del tasto cambiato in "evidenza". Potrebbe essere necessario fare questo al fine di monitorare il trascinamento e spostare il bottone in giro:
Osservando pinch gesti Multi-Touch in un UITableView
Controlla se il pulsante inizia sovrapposizione un lato dello schermo mentre viene trascinato. Se s certa quantità di tempo trascorso da quando il pulsante iniziato sovrapposizione al bordo e quindi manipolare il UIScrollView
modo che passa alla pagina successiva sul corrispondente lato dello schermo
Potrebbe essere necessario utilizzare NSTimer
per tenere traccia di quanto tempo il pulsante viene tenuto premuto, ecc.
In ogni caso non c'è alcun motivo per cui questo non poteva funzionare.
Se UIButton non funziona allora forse provare una sottoclasse personalizzata di UIControl (che replica la stessa touch down azioni, ecc). Se questo non funziona, quindi utilizzare la cosa finestra degli eventi di intercettazione per tenere traccia di tutto.