Delegato del mailComposer

Un piccolo reminder per sottolineare quanto i piccoli errori possano far perdere molto tempo: quando si implementa il mailComposer di Apple in una apple, ricordarsi di impostare

1
mailComposer.mailComposeDelegate = self;
mailComposer.mailComposeDelegate = self;

e non

1
mailComposer.delegate = self;
mailComposer.delegate = self;

nel secondo caso,infatti, il composer non comunicherà di aver terminato il proprio al viewcontroller che lo ha visualizzato e questo non lo discetterà.

Bloccare lo scroll in una sola direzione

Usando le UIScrollView può capitare di voler disabilitare lo scroll solo orizzontale o solo verticale anche se l’app, tramite qualche funzione, dev’essere in grado di muovere in ogni direzione il contenuto della scrollView. Per fare questo possiamo usare il seguente codice:

1
2
3
4
- (void)scrollViewDidScroll:(UIScrollView *)aScrollView
{
    [aScrollView setContentOffset: CGPointMake(aScrollView.contentOffset.x, 0)];
}
- (void)scrollViewDidScroll:(UIScrollView *)aScrollView
{
    [aScrollView setContentOffset: CGPointMake(aScrollView.contentOffset.x, 0)];
}

In questo modo lo scroll avviene solo in orizzontale. Se lo volessimo, potremmo impostare la coordinata y su un valore diverso da zero. Invertendo x con y, invece, il blocco avverrebbe nella direzione opposta.

Comunicare con un UIContainerViewController

Gli UIContainerViewController sono dei contenitori utilissimi per separare un’interfaccia grafica in parti più piccole e meglio gestibili. Un’enorme semplificazione si può avere nell’uso di una UIScrollView, la cui view contenuta, per essere interamente visualizzabile nello Storyboard, può essere comodo inserirla in una container view.

I problemi nascono quando si vuol fare comunicare il container view con il controller principale che lo contiene. A questo proposito la soluzione più comoda, ma non l’unica, è l’uso dei protocolli. Per uno nemo su come realizzare la struttura del protocollo ecco un utile link.

 

 

Ordinare gli elementi di una IBOutletCollection

Le IBOutletCollection sono davvero molto utili. Permetto di raccogliere in un unico array una serie di oggetti grafici della stessa classe. In questo modo, se abbiamo una serie di UILabel o una serie di UIButton che ci aiutano, ad esempio, a rappresentare una griglia di una tabella o le carte di un gioco, possiamo sfogliare la collection per manipolare questi oggetti uno ad uno con un ciclo for.

Può capitare però che questi oggetti contenuti nella IBOutletCollection non siano in un ordine arbitrario ma che, ad esempio, debbano essere manipolati a seconda della posizione che occupano nello schermo. Ecco che allora possiamo usare questo codice o una sua variante:

1
2
3
4
5
self.labelsArray = [self.labelsArray sortedArrayUsingComparator:^NSComparisonResult(id label1, id label2) {
        if ([label1 frame].origin.y < [label2 frame].origin.y) return NSOrderedAscending;
        else if ([label1 frame].origin.y > [label2 frame].origin.y) return NSOrderedDescending;
        else return NSOrderedSame;
    }];
self.labelsArray = [self.labelsArray sortedArrayUsingComparator:^NSComparisonResult(id label1, id label2) {
        if ([label1 frame].origin.y < [label2 frame].origin.y) return NSOrderedAscending;
        else if ([label1 frame].origin.y > [label2 frame].origin.y) return NSOrderedDescending;
        else return NSOrderedSame;
    }];

In pratica si ordina l’array come qualsiasi altro array ma, trattandosi di oggetti presenti nell’interfaccia, possiamo ordinarli, ad esempio, secondo la propria posizione.

AlertViewStyle

Fino a poco tempo fa, prima dell’avvento di iOS 5, qualsiasi elemento di un UIAlertView che non fosse il title, il message e i buttons, doveva essere costruito a mano ed aggiunto alla view. Adesso è possibile utilizzare la proprietà alertViewStyle che permette di creare velocemente un campo di testo (sia normale che per le password) o due campi di testo login (quindi tipicamente nome utente e password). Con l’avvento di iOS 7, inoltre l’uso dell’alertViewStyle diventa necessario per evitare problemi nella costruzione dell’interfaccia.

Il semplice e chiaro articolo “iOS 5 SDK: UIAlertView Text Input and Validation” spiega in dettaglio come usare questa nuova tecnica e a come fare attenzione ad eventuali problemi che possono insorgere.

Funzioni nascoste e tips&tricks di OS X

AskDifferent è un po’ lo Yahoo! Answers con argomento Apple. Un filino più tecnico…

In un articolo chiamato “Hidden OS X features or tips and tricks” sono raccolti le funzionalità meno conosciute e i trucchetti più utili del sistema operativo OS X. Anche se non si tratta di argomento iOS, la pagina è così ben fatta che merita una segnalazione.