UIPickerView circular - "Gambiarra oficial" da Apple
Escrito por Felipe Barreto em 30/11/09 12:44
Para quem não conhece, o UIPickerView é o componente do iPhone que parece um letreiro de máquinas caça-níquel e é normalmente utilizado em situações onde você tem que escolher uma dentre várias opções.

Não vou me aprofundar sobre o uso deste componente em situações normais, pois já existe documentação suficiente para isso, mas pretendo explorar uma maneira de estender seu comportamento, permitindo que a lista de opções apareça de uma maneira circular, num loop infinito.
O componente padrão, infelizmente, não possui qualquer mecanismo para viabilizar essa funcionalidade, contudo existe um outro componente, UIDatePicker, que utiliza o UIPickerView com uma lista circular para escolher dias, minutos, etc. Vendo isso, conclui: "bom, tem um jeito.. a Apple só não quer nos contar qual".

Procurando o truque
Coloquei o UIDatePicker numa app de teste para rodar no iPhone e ativei o modo de debug para começar a destrinchar o componente. Fiz um passeio entre dezenas de views e subviews, trocando ponteiros em tempo de execução, chamando métodos de objetos que nunca teria acesso de modo normal, entre outras coisas que crianças não devem tentar em casa :) e acabei topando com a solução para o problema. E me surpreendi!
Expondo a gambiarra
O UIPickerView sempre deve ser associado a um UIPickerViewDataSouce e a um UIPickerViewDelegate que vão prover as informações necessárias para montar o componente.
Vou assumir que existe um array que será a base de dados para o componente.
NSArray *meusItens;
O UIPickerViewDataSouce possui um método que define o número de linhas (rows) que cada subcomponente do UIPickerView deverá exibir. É aí que começa o truque.
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component {
return [meusItens count] * 10000;
}
Observe que multipliquei o numero de elementos do array por 10.000!! Sim! Este é o macete que a Apple usa para fazer uma lista "infinita". Não tem nada de infinita, mas sim uma lista suficientemente grande para que somente os usuário mais chatos curiosos consigam chegar ao fim.
Para completar o truque, a lista de 10000 x N opções deve ser exibida a partir da metade. Desta maneira, ela terá scroll "infinito" em qualquer direção. Basta colocar a linha a seguir no viewDidLoad do seu controlador, ou onde achar melhor.
[minhaPickerView selectRow:([meusItens count]*5000) inComponent:0 animated:NO];
Repare que posicionei a minhaPickerView na posição 5000 x N, ou seja, na metade da lista.
Quando for necessário mapear uma linha qualquer dentro do seu array - como na hora de definir o conteúdo de cada linha ou decidir o que fazer quando o usuário escolher uma linha - basta usar o seguinte código.
[meusItens objectAtIndex:(row % [meusItens count])];
O que eu fiz foi aplicar o operador módulo (%) sobre o número da linha usando o tamanho da lista original. O resultado será sempre um inteiro entre 0 e o tamanho da lista menos 1 - que é o necessário para acessar todos os itens do array.
Pronto! Agora você tem uma lista circular com o carimbo da Apple :)

OBS: Utilize este recurso apenas se sua lista possuir um número razoável de elementos, pois se ela tiver até 4 ou 5, um ou mais elementos aparecerão duplicados na tela - o que ficaria bem esquisito.
Bom, é isto! Espero que tenha ficado claro, mas se restar dúvida, fique a vontade para colocá-la nos comentários.
Leia também:
Desenhando interfaces para iPhone
Escrito por Hildi em 24/11/09 16:02
Durante o desenvolvimento de projetos para iPhone, é muito importante criarmos protótipos, que num primeiro momento podem ser um simples rascunho e depois algo mais fiel ao que será implementado pelos desenvolvedores. Para isso, podemos fazer uso de algumas ferramentas criadas por designers e disponibilizadas gratuitamente. Assim, não precisamos ter o Interface Builder fazer alguns layouts. =)
iPhone GUI PSD
A Teehan+lax criou um documento PSD contendo uma variedade de elementos gráficos idênticos aos existentes no iPhone. A versão do documento já contempla elementos visuais do iPhone OS 3.0. Você pode baixar o arquivo através deste link.

iPhone Mockup
Neste caso, o protótipo é construído diretamente do site, podendo simular o desenho à mão ou não. É muito útil quando queremos construir um protótipo rapidinho, só pra ter aquela ideia de como ficaria a tela. Para saber mais, acesse: http://iphonemockup.lkmc.ch/.

Conhece alguma outra ferramenta? Comente!
Google comprará AdMob
Escrito por Quintana em 09/11/09 16:43
A AdMob, uma das maiores plataformas de anúncios móveis anunciou hoje para seus clientes e parceiros que assinou um acordo definitivo onde será adquirida pela Google por US$ 750 milhões.
A AdMob é conhecida pelos usuários de iPhone, pois diversos aplicativos, como o nosso Cine Mobits, utilizam a sua plataforma de propaganda para viabilizar sua gratuidade. Ela também disponibiliza propagandas para outras plataformas, como o Android.
A Google já havia anunciado a sua entrada no mercado de anúncios para dispositivos móveis, portando o Google Ads para o iPhone e o Android. Mas, como sabemos, a Google nunca entra para ser mais um no mercado, ela quer sempre ser a maior. A compra da AdMob certamente a consolidará como a maior player desse mercado.
Nós que utilizamos a plataforma da AdMob acreditamos que haverá melhorias com a maior oferta de anúncios do Google, podendo levar anúncios aos nossos aplicativos que sejam mais adaptados ao conteúdo do mesmo.
Leia também:
Como retirar o joystick do Cine Mobits do seu Nokia
Escrito por Karin em 05/11/09 18:19
Olá pessoal,
com o lançamento da última versão do Cine Mobits Java, muitos usuários de celulares Nokia touch têm perguntado o porquê de aparecer um joystick quando iniciado o Cine Mobits. Então eis a resposta!
Nos novos celulares Nokia touch (como Nokia 5800, N97), a configuração para que apareça o joystick em aplicativos é padrão. Porém, há uma forma de alterar para que não apareça mais. Só deixar claro que isso é uma configuração por aplicativo, pois uns podem precisar do joystick, enquanto outros não, como no caso do Cine Mobits.
Então segue como alterar a configuração:
Menu -> Settings -> Application mgr -> Installed apps -> CineMobits - > Options -> Suite settings -> On-screen keyboard
Só atentem que para celulares em que a língua é em português, o passo-a-passo é o mesmo, porém traduzido para português!
Pronto! Agora você verá que quando iniciado o Cine Mobits não terá mais o joystick aparecendo.
Aproveitem o Cine Mobits :)