back to top

Utilizziamo la classe UITouch ed il metodo touchesMoved – Guida Sviluppo App iOS

Come detto precendentemente, con la classe UITocuh, siamo in grado di conoscere le coordinate esatte in cui si trova il dito dell’utente sullo schermo del dispositivo. Utilizzando questa proprietà e sfruttando il metodo touchesMoved possiamo permettere all’utente di disegnare sul dispositivo, come se stesse usando un qualsiasi programma di grafica, semplicemente muovendo il dito sullo schermo. Quello che vogliamo fornire all’utente in questa guida è un approccio iniziale al problema, che ovviamente dovrà essere ampliato se si ha intenzione di produrre un’applicazione seria che svolga questa funzione.

Dunque, per fare ciò che ci siamo prefissati possiamo tranquillamente utilizzare sempre il nostro solito progetto relativo al menù di un’applicazione. Andiamo quindi a posizionarci nel file di implementazione di uno dei ViewController inserendo il seguente codice:

-(void) touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{	
 
  UITouch *touch = [touches anyObject];
  CGPoint punto = [touch locationInView:self.view];
  CGRect frame = CGRectMake(punto.x, punto.y, 10, 10);
  UIImageView * image;
  image = [[UIImageView alloc] initWithFrame:frame];
  image.backgroundColor=[UIColor redColor];
  [self.view addSubview:image];
  [image release];
}
Come prima cosa andiamo a dichiarare una variabile di tipo UITocuh ed associamogli la proprietà di tocco su ogni oggetto: ciò vuol dire che quasiasi punto dello schermo sarà sensibile al tocco potendo così interagire sull’intera superficie dello schermo. A questo punto dichiariamo una varibile CGPoint ed inseriamoci le coordinate attuali del dito sullo schermo utilizzando il metodo locationInView che abbiamo discusso ampiamente nei capitoli precedenti. Ovviamente, come parametro del metodo passiamo l’attuale view gestita dal ViewController nel quale abbiamo inserito il codice. Dato che adesso sappiamo le coordinate del dito, creiamo un frame di larghezzaa 10×10 pixel e come punto di origine gli passiamo la coordinata x e la coordinata y del CGPoint. Creato il frame siamo pronti per dichiarare una UIImageView ed inizializzarla con tale frame. Una volta colorato lo sfondo dell’immagine di un colore diverso da quello di sfondo della view possiamo tranquillamente invocare il metodo addSubView per mostrare a schermo l’immagine.

Se adesso lanciate l’applicazione vedrete che, muovendo il dito sullo schermo (oppure il puntatore del mouse sul simulatore), l’area interessata dal tocco verrà colorata.

In sostanza il blocco di codice all’interno del metodo touchesMoved viene richiamato ogni qual volta l’applicazione capta un movimento sullo schermo. Si noti, tuttavia, che l’approccio così presentato è in realtà un approccio molto semplicistico dalle finalità puramente didattiche, in quanto se si intende realizzare un’applicazione di questo genere è opportuno non utilizzare una ImageView, ma bensì la classe UIGraphics con i suoi metodi.

Anche in questo caso si consiglia al lettore di prendere dimestichezza con il metodo touchesMoved facendo un po’ di pratica.

Mostriamo adesso un’altra semplice implementazione per generare uno sfondo psichedelico quando l’utente muove il dito sullo schermo:

-(void) touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{
  int numeroRandom = arc4random() % 4;
  if (numeroRandom == 0)
    self.view.backgroundColor = [UIColor greenColor];
  else if(numeroRandom==1)
    self.view.backgroundColor = [UIColor blackColor];
  else if(numeroRandom==2)
    self.view.backgroundColor = [UIColor blueColor];
  else
    self.view.backgroundColor = [UIColor yellowColor];
}		
Il codice sopra riportato è di ovvia comprensione. Quando l’utente muove il dito sullo schermo lo sfondo viene colorato di un determinato colore in accordo con il valore della variabile numeroRandom.

Pubblicità

In questa guida...