Sto cercando il modo migliore per rilevare più di un dito sullo schermo alla volta. Non sto rilevando rubinetti o pizzicotti, solo il fatto che più di un tocco sta accadendo. Sembra che non ci siano riconoscitori di gesti per questo. Qual è il modo migliore?iOS - rileva quando sullo schermo è presente più di un dito
risposta
Nei tocchi Began, touchMoved e tocca i metodi Ended, un parametro è un evento, che è un oggetto UIEvent. Il numero di dita sullo schermo è [[event allTouches] count].
[Modificato perché Josh Hinman fatto notare che avevo sbagliato prima -. La mia precedente proposta di utilizzare [count tocchi] sul parametro tocchi in quegli stessi metodi non funzionerà]
Non credo che possa fornire in modo affidabile il numero totale di tocchi sullo schermo; solo il numero di tocchi che vengono aggiornati. In altre parole, se ho tre dita sullo schermo, e muovo un dito mantenendo gli altri due fermi, quindi tocca Moved: verrà chiamato con un NSSet di un tocco (quello che ho spostato). –
One/Multi touch è trasparente per te - Ricevi solo notifiche su dove un tocco è iniziato/spostato/terminato/toccato. Se si verificano due tocchi allo stesso tempo, riceverete le notifiche per entrambi.
Non conosco alcuna funzione incorporata che determina se le sequenze di tocco visualizzate consistono o meno in un pizzico. Ma è possibile dare un'occhiata al codice di esempio "tocco" di Apple per l'ispirazione.
https://developer.apple.com/library/ios/#samplecode/Touches/
documentarsi sul metodo -touchesBegan:withEvent:
. È il punto di ingresso nella gestione degli eventi multi-touch.
Ecco collegamento lib di uno sviluppatore su eventi multitouch: https://developer.apple.com/library/ios/#documentation/EventHandling/Conceptual/EventHandlingiPhoneOS/MultitouchEvents/MultitouchEvents.html
Ho provato questo nel controller della vista, ma non viene mai chiamato: - (void) toccaBegan: (NSSet *) tocca conEvent: (UIEvent *) evento { \t NSLog (@ "num tocchi:% d", [tocca contare]); } – sol
Si può provare a utilizzare una classe UITapGestureRecognizer, e impostare la proprietà numberOfTouchesRequired a 2.
Si noti che questo funziona solo se multipleTouchEnabled è impostato su SÌ sulla vista.
(vuoto) touchBurn: (NSSet *) tocca conEvent: (UIEvent *) evento {
NSLog (@ "% lu", [[evento allTouches] conteggio]); }
È per qualsiasi punto dello schermo o su una vista particolare? –