Domanda

Sto cercando di implementare un controllo del volume come pulsante rotondo. Attualmente posso rilevare colpi dal gesto Recognizer. Come posso rilevare un gesto circolare (in senso orario e antiorario) sul pulsante? Grazie!

È stato utile?

Soluzione

Sei alla ricerca di un one-touch gesto (come un cursore circolare), oppure un due-touch gesto (come afferrare e girando una manopola del mondo reale)? In quest'ultimo caso, dare un'occhiata a UIRotationGestureRecognizer .

Nel primo caso, sei praticamente da soli. È certamente possibile implementare la soluzione come il proprio gesto personalizzato riconoscitore: questo è previsto da Apple, e c'è qualche documentazione per iniziare (anche se non ho visto molti esempi di lavoro là fuori). Vedere anche Come correttamente sottoclasse UIGestureRecognizer .

Come approccio generale, potrebbe pensare della regione per il gesto come una forma di ciambella: una zona con centro c , raggio interno r1 e raggio esterno r2 . Quando l'utente tocca verso il basso si può calcolare la distanza da c usando il teorema di Pitagora, e l'angolo con la funzione trigonometrica preferito. Con questo, è possibile determinare se il tocco è all'interno della zona. Come utente trascina, è possibile aggiornare il valore di controllo in base all'angolo. Ad un certo punto, faranno o ritoccare, o trascinare fuori della zona, e che si concluderà il gesto. Suggerisco permettendo il tocco di allontanarsi abbastanza lontano all'interno R1 o al di fuori di r2 :. Dita sono strumenti imprecisi

Altri suggerimenti

Per quanto non riuscendo a trovare una soluzione, e per ispirazione logica da @ di Sixten risposta, sono andato e ha creato qualcosa di utile, non è a prova di proiettile, ma sembra di fare quello che mi serve per il momento.

Si prega chiunque, forchetta esso, clone di esso, usarlo, migliorarlo, è open source, ecco il mio collegamento pronti contro termine:

https://bitbucket.org/danielphillips/dpcirculargesturerecognizer

Hai provato a scrivere il proprio sistema di riconoscimento gesto? Ci sono le istruzioni in dettaglio nella documentazione.

Il modo migliore sarebbe implementare personalizzato Gesture Recognizer. Non so se si desidera rilevare un discreto gesto (metodo di gestione degli eventi sarebbe stato chiamato una volta è stato rilevato il cerchio completo) o continua gesto (metodo di gestione degli eventi sarebbe chiamato ogni volta che si sposta il dito su un percorso circolare).

Probabilmente, l'utente non può disegnare un cerchio perfetto, e la soluzione fornita da @Sixten Otto sarebbe bene.

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