Scrivi una circolare UIGestureRecognizer
-
02-10-2019 - |
Domanda
Sto cercando di creare un jog wheel in un'applicazione iPhone / iPad. So che è possibile creare una sottoclasse UIGestureRecognizer per scrivere i propri sistemi di riconoscimento. Qualcuno sa come (soprattutto la matematica dietro di esso) per creare uno che avrebbe rilevare un movimento circolare, forse in combinazione con un gesto pan?
Grazie
Soluzione
questa domanda non è facile. Alcuni li spendo tempo pensando a una possibile soluzione:
Penso che quello che vi serve sono alcune proprietà chiave è necessario impostare:
- Il centro del movimento circolare (in questo caso non è un problema, perché si conosce il centro della jog wheel)
- Un corridoio in cui il movimento dovrebbe accadere.
- quindi è necessario il raggio interno e il raggio esterno.
Ora avete qualcosa di simile (purtroppo non ho abbastanza reputazione in modo che solo il link: http://img17.imageshack.us/img17/4416/bildschirmfoto20100721u.png
Ora la matematica alla base di questo inizio:
Prima di tutto ad organizzare il corridoio in quattro quarti:
- Da 0 ° a 90 °
- Da 90 ° a 180 °
- da 180 ° a 270 °
- 270 ° a 360 °
Per ogni trimestre si deve capire quando il dito è in movimento (diciamo che la 0 ° -line è dal punto centrale dritto verso l'alto):
- se il dito è nel primo trimestre a sapere se la x passa a sinistra che la rotazione deve essere in senso antiorario. Se la x passa a destra la rotazione deve essere in senso orario.
applicare questa logica per tutti i trimestri. Ora sapete se la ruota jog viene spostato in senso orario o antiorario. Bisogna fare in modo, che il dito non è mai lasciando il corridoio (se si prova questa logica e il movimento si arresta a causa di lasciare il corridoio, rendono il corridoio più grande - Grazie a CrystalSkull per il suo commento: Usare 44px come una larghezza minima per la corridoio per applicare le Human Interface Guidelines).
Sumary
Così ora si può concludere che è necessario un punto centrale e un corridoio il dito può muoversi in.
Dovete capire che nel quarto dito è dentro e scoprire (utilizzando il valore x) se la rotazione è in senso orario o anti-orario.
Spero che questo ti aiuta un po '.