Pergunta

A pergunta rápida sobre a classe UISegmentedControl no iPhone.

Felizmente, alguns podem ter notado como em seu estado padrão com 2 segmentos, o controle segmentado ainda vai alternar mesmo se as torneiras de usuário em um segmento que atualmente selecionado.

Eu vi UISegmentedControls em aplicativos que negam que o comportamento e não de alternância quando o usuário pressiona um segmento selecionado. Ou seja, loja iTune da Apple aplicativo.

Existe uma maneira simples de prevenir este comportamento que eu estou com vista, ou que eu preciso para escrever alguma lógica no valueChanged?

Eu tenho tentado desativar segmentos selecionados no momento e permitindo que os não selecionados, mas isso parece mudar a aparência do controle quando eu não quero que fazer.

Todas as idéias?

Foi útil?

Solução

Examinar o UISegmentedControl.h arquivo de cabeçalho (uma maneira fácil é dar um duplo clique em "UISegmentedControl" em XCode com Command pressionada).

De lá você verá um número de itens em um _segmentedControlFlags struct. Se você fizer uma categoria em UISegmentedControl, você pode manipular qualquer um desses elementos -. Incluindo dontAlwaysToggleForTwoSegments , que como você pode imaginar pelo nome é o que você está procurando

Uma vez que este está documentado no cabeçalho API (embora não na documentação real) que deve ser bastante seguro de usar.

Outras dicas

Este comportamento padrão foi alterado na API 3.0.

Na 3.0, " _segmentedControlFlags " foi alterado para o " momentânea " propriedade, que ainda podem ser encontrados no UISegmentedControl.h arquivo de cabeçalho.

Acessando os _segmentedControlFlags através de uma Categoria é considerado como o uso de uma API privada e, portanto, uma violação do Acordo de Licença pela Apple, como eu tive que aprender hoje. Até agora, eu pensei, Categorias são um recurso de linguagem para corrigir alguma outra pessoa projeto horrível classe ...

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top