Quando l’utente tocca lo schermo di un dispositivo touch il sistema (o meglio l’applicazione) è in grado di catturare l’evento al fine di modellare un comportamento in relazione ad ogni evento. Fino a questo momento, nelle applicazioni di esempio, abbiamo solo trattato il caso in cui un’utente clicchi su un specifico bottone, ma non abbiamo gestito il comportamento dell’applicazione quando l’utente semplicemente tocca le altre parti dello schermo.
Le azioni che può compiere un utente sono sostanzialmente di due tipi:
- touch singolo con un dito
- multi-touch con due dita
Per quanto riguarda il primo caso la classe che si occupa questo tipo di interazione è UITouch. Questa classe è in grado di gestire, oltre che al classico touch su un bottone, anche il movimento del dito sullo schermo. Il secondo tipo di interazione è invece gestita dalla classe UIGestureRecognizer che, in sostanza, è in grado di riconoscere le gesture ovvero delle azioni prestabilite compiute dall’utente come, per esempio, lo zoom-in di una foto eseguito poggiando sullo schermo due dita ed allontanandole progressivamente l’una dall’altra.
Adesso concentriamo la nostra attenzione sulla classe UITouch. Un oggetto di questa classe, come abbiamo detto, è una sorta di gestore che rileva la presenza o il movimento di un dito dell’utente sullo schermo. Questa classe ci fornisce diversi metodi che possiamo utilizzare nello sviluppo delle nostre applicazioni: potremo infatti sapere in che punto della view si trova il dito dell’utente, in che direzione si sta spostando e molto altro. Le applicazioni per iPhone e iPod Touch che permettono all’utente di disegnare sullo schermo sfruttano, appunto, i metodi forniti dall’interfaccia UITouch: in ogni istante viene rilevata la posizione del dito sullo schermo e si colora l’area relativa al tocco; questo procedimento viene ripetuto tutte le volte che il dito di muove sullo schermo.
Il metodo che ci permette di capire in che punto dello schermo si trova il nostro dito è il metodo locationInView: che prende come parametro il nome della view e ritorna un CGPoint. Mostreremo, nel prossimo capitolo, una semplice applicazione che sfrutta proprio la localizzazione del touch in un determinato punto dello schermo.
Per quanto riguarda il touch dell’utente è possibile suddividerlo in alcune fasi ben distinte:
- touchBegan: è l’evento associato al tocco iniziale (il dito dell’utente si poggia sullo schermo).
- touchMoved: è l’evento associato al movimento del dito dell’utente sullo schermo del dispositivo (ovviamente questo tipo di azione deve essere preceduta da un touchBegan).
- touchEnd: è l’evento associato al distacco del dito dell’utente dallo schermo del dispositivo.
Risulta di vitale importanza riuscire a gestire separatamente le tre fasi del touch per poter personalizzare al meglio il comportamento della nostra applicazione. Tale differenziazione può essere tranquillamente eseguita dichiarando, all’interno del file di implementazione, della nostra classe o del nostro ViewController i seguenti tre metodi:
-(void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
}
-(void) touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{
}
-(void) touchesEnd:(NSSet *)touches withEvent:(UIEvent *)event{
}
Come è intuibile, è sufficiente inserire il codice relativo al comportamento che vogliamo fare assumere dalla nostra applicazione in risposta ad un certo evento, nel metodo opportuno. Questo permette, sfruttando ad esempio gli attributi degli elementi grafici, di mutarne l’aspetto quando l’utente muove il dito sullo schermo creando così delle semplici, ma pur sempre gradevoli animazioni.
Nei prossimi capitoli vedremo in che modo sfruttare la presenza dei tre metodi sopra enunciati per poter dare al lettore un punto di partenza dal quale partire per creare animazioni anche più complesse di quelle che andremo a presentare nella nostra trattazione.