O objeto NSUserDefault normalmente e usado para salvar e recuperar as preferencias da sua aplicacao. Alem das informacoes especificas da aplicacao existe uma lista de informacoes padroes accessiveis a todos os aplicativos e nao somente os nativos. Estas informacoes podem ser acessadas atraves do metodo standardUserDefaults da classe NSUserDefault.Para pegar lista de informacoes padroes do sistema:NSDictionary* defaults = [[NSUserDefaults standardUserDefaults] dictionaryRepresentation];NSLog(@"Defaults: %@", defaults);Uma parte dos resultados seriam assim:Defaults: { AppleICUForce24HourTime = 0; AppleITunesStoreItemKinds = ( wemix, podcast, ... ); AppleKeyboards = ( "en_US@hw=US;sw=QWERTY", "zh_Hant-HWR@sw=HWR", "emoji@sw=Emoji" ); AppleKeyboardsExpanded = 1; AppleLanguages = ( en, "zh-Hant", fr, de, ...}Como pode ver o retorno acima e um dicionario de dados. A lista de teclados instalados e um NSArray, dentro deste dicionario. Para recuperar somente a lista de teclados basta buscar pela chave "AppleKeyboards".NSArray *array = [[NSUserDefaults standardUserDefaults] objectForKey:@"AppleKeyboards"];NSLog(@"Keyboards: %@", array);Que o resultados seria algo parecido com isso:Keyboards: ( "en_US@hw=US;sw=QWERTY", "zh_Hant-HWR@sw=HWR", "emoji@sw=Emoji") Ha pouco tempo atras eu precisei desenvolver um componente para escolher uma cor dentre uma seria de outras cores e dai como nao achei nada semelhante ou do jeito que eu queria preferi fazer um eu mesmo.A sua implementacao e bastante sim.Basta declarar o delegate MBColorPickerDelegate na viewcontroller que deseja utilizar e a partir dai com apenas 3 linhas de codigo voce coloca ele na tela e funciona perfeitamente.Fiquem a vontade de usa-lo em suas aplicacoes, mas tentem pelo menos manter meu nome no topo como autor do mesmo, e alem disso tambem fiquem a vontade sugerirem melhorias, mandarem duvidas, pedidos e logico desenvolverem melhorias para o componente voces mesmo.Baixe aqui o componente. A um tempinho atras eu tive que tracar uma rota de um ponto a outro no MKMapView em uma aplicacao para iPhone que eu estava desenvolvendo e mesmo achando que poderia ser muito simples depois fui descobrir que nao era tanto assim. Porque e muito simples mostrarmos um ou varios pontos no MKMapView, mas quando estamos falando de rotas estamos falando de dezenas ou milhares de pontos para termos uma rota correta. Bom, apos um pouco de pesquisa eu descobri que o Google (Logico!) tem um webservice que retorna um arquivo do tipo *.kml, e que este arquivo pode ser importado pelo Google Earth, Google Maps ou mesmo parseado pelo iOS e passadas as informacoes para o MKMapView, e foi isso que eu fiz e vou mostrar aqui como.Primeira coisa a fazer e baixar o componente que eu uso para parserar o arquivo KML e passa-lo para o MKMapView.O que eu fiz foi:1. Acessar o webservice do Google para capturar o arquivo com as informacoes da rota- Eu usei a biblioteca ASIHTTPRequest para acessar o webservice do Google e capturar o arquivo: http://allseeing-i.com/ASIHTTPRequest/2. Salvar o arquivo localmente no iPhone3. Acessar o arquivo e usar o KMLParser para parsear os dados da rota4. Passar as informacoes para MKMapView5. Apagar o arquivo para nao sobrecarregar o iPhone.LINK PARA KMLPARSER1. Deste componente voce so precisa importar para o seu projeto os arquivos:- KMLParser.h e KMLParser.m- Importar "#import "KMLParser.h" no arquivo que for usar2. Acessando o Webservice:NSString *strUrl = [NSString stringWithFormat:@"http://maps.google.com/maps?f=d&source=s_d&saddr=%@,+%@&daddr=%@,+%@&hl=en&geocode=FWikz_4dDKBh_SnRH9PyzZmmADFdudOx0L-gAA%3BFQfB0P4d2a1h_SlxF9ueiZqmADHoONBTqE_fYQ&mra=ls&ie=UTF8&z=13&output=kml", STRING_ENDERECO_ORIGEM, STRING_CIDADE_ESTADO_PAIS, STRING_ENDERECO_DESTINO, STRING_CIDADE_ESTADO_PAIS];