Hey sviluppatori!
Oggi andremo ad aggiungere un po’ di divertimento alle nostre applicazioni usando le vantaggiose classi di iOS per quanto riguarda le gestures multitouch ovvero: UIGesturesRecognizer il quale è stata introdotta da iOS 3.0, quando era ancora chiamato iPhone OS.
UIGesturesRecognizer è una classe astratta che che si estende in numerose classi concrete: ad esempio: UITapGestureRecognizer, UIPinchGestureRecognizer.
Oggi andremo ad esaminare la gesture del semplice tap, per riconoscere quando un oggetto, quindi non solo un pulsante viene toccato ed invocare un azione di conseguenza.
Iniziamo
Apriamo Xcode e creiamo un nuovo progetto del tipo view-based application chiamandolo DemoPhotoBoard.
Una volta creato il progetto dobbiamo aggiungere il framework “Mobile Core Services” che ci consentirà un controllo maggiore sulla UIImageView che andremo ad inserire.
Adesso spostiamoci nel file DemoPhotoBoardViewController.h ed importiamo il framework:
[code lang=”obj-c”]#import <MobileCoreServices/MobileCoreServices.h> [/code]
Adesso possiamo completare il resto dell’header aggiungendo le variabili necessarie per l’implementazione
[code lang=”obj-c”]@interface DemoPhotoBoardViewController : UIViewController {
}
-(IBAction)addPhoto:(id)sender;
@end[/code]
Spostiamoci in interface builder aprendo il file DemoPhotoBoardViewController.xib e disegniamo l’interfaccia: per il nostro scopo ci basta un UIImageView al centro dello schermo con l’autosizing impostato in questo modo
ed impostare la UIImageView in questo modo:
Dobbiamo, adesso inserire un’immagine nella UIImageView; possiamo farlo sia da codice, da rullino o interface builder, per adesso non importa.
Spostiamoci nel file d’implementazione DemoPhotoBoardViewController.m ed aggiungiamo nel metodo ViewDidLoad:
[code language=”lang=”] imageView.userInteractionEnable=YES; //molto importante per l’interazione con l’oggetto</pre>
<pre>UITapGestureRecognizer *tapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapped:)];
[tapRecognizer setNumberOfTapsRequired:1];//riconosce un solo tap
[tapRecognizer setDelegate:self]; //non dimentichiamoci di aggiungere il delegate UIGesturesRecognizer
[imageView addGestureRecognizer:tapRecognizer];[/code]
Poi dichiariamo e inseriamo un nuovo metodo che controllerà l’azione dopo il tap
[code language=”lang=”]-(void)tapped:(id)sender {
NSLog(@"Hai fatto tap");
}[/code]
UIGesturesRecognizer contiene la proprietà UIGestureRecognizerState che ci consentirà di tenere sotto controllo tutti gli stati della gesture.
- UIGestureRecognizerStateBegan
- UIGestureRecognizerStateChanged
- UIGestureRecognizerStateEnded
Buon tap a tutti!