Nomi progetti Xcode

Breve post con una piccolissima ma fondamentale info, ossia non inserire nel nome di un progetto Xcode il tratto basso ” _ “. Se si utilizza il tratto basso infatti si avranno poi dei problemi nel momento in cui si vorrà lanciare l’applicazione su un dispositivo reale in quanto il file .plist solleverà un errore legato al product_name.
E’ facile intuire come risulti macchinoso il rename di un progetto Xcode (non eseguire MAI un rename “semplice” del nome del progetto pena la non compilazione successiva dello stesso) in quanto l’ide crea in automatico i file di base del progetto e i collegamenti interni tra essi.

Gestire l’evento shake

Lo shake in alcune guide online è spesso trattato in maniera poco “corretta” o comunque in modo stilisticamente poco fine. Con questo intendo dire che alle volte viene rilevato un evento shake controllando l’accelerometro e i movimenti sui tre assi da esso rilevati. Questa soluzione è sicuramente funzionante è corretta ma diciamo che non tiene conto di una cosa……Cocoa Touch gestisce già l’evento shake e gestisce nel contempo i problemi legati a questo evento (uno shake lungo o corto che sia sempre uno rimane, con gli accellerometri invece basta rallentare senza fermasi per fare scaturire diversi shake). Quindi valutate bene cosa dovete realizzare perchè entrambi i metodi funzionano ma hanno caratteristiche differenti. Ora vi posto il codice dell’evento shake.

#codice da inserire nel file header ad esempio "pippo.h"
 
//evento shake della libreria UIResponder
- (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event;
 
#nel vostro file "pippo.m" invece
//metodo che al riconoscimento dello shake aiuta a capire la schermata
- (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event {
if (event.type == UIEventSubtypeMotionShake) {
NSLog(@"shake shake shake");
}
}
 
-(BOOL)canBecomeFirstResponder {
return YES;
}
 
-(void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
[self becomeFirstResponder];
}
 
- (void)viewWillDisappear:(BOOL)animated {
[self resignFirstResponder];
[super viewWillDisappear:animated];
}

UIControlEvents – Azioni da associare agli eventi

Oggi mi sono trovato in una situazione un po’ strana, ossia cercare di capire come funzionano gli eventi associabili ai metodi. La classe di riferimento per la gestione degli eventi in Cocoa Touch è proprio la UIControlEvents. Sembrerà banale il piccolo programma che ho realizzato ma mi è servito per comprendere in pieno in che momento esatto viene scatenato un eventi.
Sul sito della Apple sono spiegati bene (qui) ma il mio reale problema era capirne il funzionamento utilizzando il VoiceOver, ossia lo screen reader di Apple.

ApplicationTest

Dal test ho evindenziato che gli eventi “drag” sono praticamente inutilizzabili.
Se volete provare, o anche solo guardare un po’ il codice e commentarlo è questo buttonactions ,anche se è stato scritto in pochi minuti per testare l’usabilità dei controlli. Ricordo che per testare il Voice Over bisogna obbligatoriamente deployare l’applicazione sul device in quanto non è un’operazione testabile con il simulatore.

Elenco degli eventi e breve descrizione:

UIControlEventTouchDown – Un evento touch-down è un tap.
UIControlEventTouchDownRepeat
– Un evento ripetuto touch-down, in questo caso, il valore del metodo tapCount UITouch è maggiore di uno.
UIControlEventTouchDragInside – Un evento in cui si trascina con un dito dentro i limiti del controllo.
UIControlEventTouchDragOutside – Un evento in cui si trascina con un dito appena fuori dai limiti del controllo.
UIControlEventTouchDragEnter – Un evento in cui è trascinato un dito nel limiti del controllo.
UIControlEventTouchDragExit – Un evento in cui viene trascinato dall’interno di un controllo al di fuori del proprio limiti.
UIControlEventTouchUpInside – Un evento touch-up  in cui il dito è dentro i limiti del controllo.
UIControlEventTouchUpOutside – Un evento touch-up in cui il dito è fuori dei limiti del controllo.
UIControlEventTouchCancel – Un evento di sistema che cancella i tocchi correnti per il controllo.
UIControlEventValueChanged
– Un slide o uno switch che causa l’emissione di una serie di valori diversi.
UIControlEventEditingDidBegin
– Scatta all’ avvio di una sessione di editing in un oggetto UITextField.
UIControlEventEditingChanged
– Scatta ad un cambiamento in un objet UITextField.
UIControlEventEditingDidEnd
– Scatta all’uscita di  una sessione di editing in un oggetto UITextField.
UIControlEventEditingDidEndOnExit
– Tocco che termina la sessione di editing in un oggetto UITextField.
UIControlEventAllTouchEvents
– Tutti gli eventi tocco.
UIControlEventAllEditingEvents
– Tutti i tocchi di editing per gli oggetti UITextField.
UIControlEventApplicationReserved
– Gamma di valori di controllo-evento disponibili per l’utilizzo dell’applicazione.
UIControlEventSystemReserved
– Una gamma di valori di controllo-evento riservato per uso interno.
UIControlEventAllEvents
– Tutti gli eventi, compresi gli eventi di sistema.

Il paradigma MVC – (model view controller)

Nella programmazione objective-c di iphone il paradigma MVC sta alla base di tutte le operazioni ed è bene averne compreso bene il funzionamento prima di addentrarsi nel codice, pena la confusione più totale (..parlo anche per esperienza.. ).
Questo tipo di paradigma serve per dividere il codice che gestisce l’applicazione dal codice che gestisce la GUI grafica.
Il modello MVC si può dividere per funzionalità in tre categorie:
- Model : le classi che compongono l’applicazione e la gestione dei dati
- View: dove sono presenti tutti gli elementi grafici come le finestre, i controlli ecc.. che servono poi per interagire con l’applicazione
- Controller : questa parte è l’anello di congiunzione tra il model e il view, in quanto lega ciò che vede l’utente con le azioni da eseguire. E’ la parte logica dell’applicazione

Interfaccia grafica delle applicazioni per iphone

Ho scoperto proprio oggi dell’esistenza di una guida ufficiale Apple nella quale viene descritta ogni singola componente presente nell’interface builder. E’ una guida molto interessante in quanto spiega anche come creare applicazioni che seguano lo stile e l’usabilità dei programmi ufficiali e soprattutto consente di esser un poco più sicuri nel momento in cui l’applicazione passa nelle mani di Apple prima di esser rilasciata nell’App Store. Linko la guida per chi ne fosse interessato, chiaramente è in inglese:

iPhone Human Interface Guidelines

L’unica pecca è rigurado allaccessibilità in quanto in questa guida non si tiene conto del possibile sviluppo di applicazioni per utenti non vedenti, come nel mio caso!