In questo articolo parleremo di UIMenuController che praticamente sono i menu che appaiono quando selezioniamo una parola o una lettera in un campo di testo, questa azione e di default. Volendo pero lo possiamo usare per far apparire il menu anche tramite un bottone o altri oggetti. Dobbiamo solo caricare l’UIMenuController che è una classe Singleton e poi aggiungergli dei UIMenuItem. Per capire bene creiamo un progetto nuovo come abbiamo fatto nei precedenti tutorial:
Dobbiamo avere un risultato di questo tipo:
Nello storyboard inseriamo un bottone e nel file del implementazione o del interfaccia creiamo un metodo IBAction. Nel file del implementazione nel metodo inseriamo questo codice:
[code lang=”obj-c”]
//deve essere il primo risponditore
[self becomeFirstResponder];
//Inizializzare la classe UIMenuController che è un singleton
UIMenuController *sharedController = [UIMenuController sharedMenuController];
//Creare i MenuItems
UIMenuItem *menuItem1 = [[UIMenuItem alloc] initWithTitle:@"stato" action:@selector(showWowAlert)];
UIMenuItem *menuItem2 = [[UIMenuItem alloc] initWithTitle:@"nome" action:@selector(showPoweredAlert)];
UIMenuItem *menuItem3 = [[UIMenuItem alloc] initWithTitle:@"numero" action:@selector(log)];
//disegnare il MenuController nella posizione giusta
CGRect drawRect = [sender convertRect:[sender bounds] toView:self.view];
[sharedController setTargetRect:drawRect inView:self.view];
sharedController.arrowDirection = UIMenuControllerArrowDefault;
//Inserire i menuItems nel menuController
[sharedController setMenuItems:@[menuItem1,menuItem2,menuItem3]];
[sharedController setMenuVisible:YES animated:YES];
//Disabilitare il menu item nel futuro
[sharedController setMenuItems:nil];
[/code]
Tramite i commenti potete capire i metodi del MenuController. Adesso inseriamo anche i metodi che faremo partire quando i MenuItem vengono premuti:
[code lang=”obj-c”]
-(void)showWowAlert
{
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"ciao" message:@"vedi che funziona !!!" delegate:nil cancelButtonTitle:@"ok" otherButtonTitles:nil];
[alert show];
}
-(void)showPoweredAlert
{
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Aldo" message:@"Questo è il mio nome" delegate:nil cancelButtonTitle:@"ok" otherButtonTitles:nil];
[alert show];
}
-(void)log
{
NSLog(@"stampare qualcosa nel console");
}
[/code]
Abbiamo creato dei UIAlertView solo per capire quando i bottoni sono attivi. Il file del progetto lo pottete scaricare qui: