Eu tenho um UIButton que, quando selecionado, não deve mudar de estado ao ser tocado. O comportamento padrão é que ele fique no UIControlStateHighlighted ao ser tocado, e isso está me deixando irritado.
Sugestões?
Seu botão deve estar buttonType
definido como Personalizado.
No IB, você pode desmarcar "Realçar ajusta a imagem".
Programaticamente, você pode usar theButton.adjustsImageWhenHighlighted = NO;
Opções semelhantes também estão disponíveis para o estado "desativado".
Além da resposta acima de desmarcar "realçar ajusta a imagem" no IB, verifique se o tipo de botão está definido como PERSONALIZADO.
fonte
Isso funcionará para você:
3ª linha é o truque aqui ...
Isso funciona da mesma maneira para definir image / backgroundImage
fonte
adjustsImageWhenHighlighted
propriedade deUIButton
parece afetar apenas a imagem de fundo.fonte
é igualmente útil por ter a aparência de um botão desativado.
fonte
Dependendo do que muda do padrão para o estado destacado do botão, você pode chamar alguns métodos para configurá-los para o que você precisa. Então, se a imagem mudar, você pode fazer
Se o texto mudar, você pode fazer
outras funções similares:
- (void)setTitleColor:(UIColor *)color forState:(UIControlState)state
- (void)setTitleShadowColor:(UIColor *)color forState:(UIControlState)state
fonte
OK, aqui está uma solução fácil, se isso funcionar para você, depois de uma semana batendo com a cabeça nisso, finalmente me ocorreu definir apenas = NÃO para a primeira linha do método IBAction para o TouchUpInside ou TouchDown, ou o que funcionar. Para mim, estava tudo bem no TouchUpInside.
fonte
Para Swifty Developer -
fonte
Swift 3+
fonte
apenas duas coisas:
fonte
Tive um problema semelhante e descobri que "desmarcar" Limpa o conteúdo gráfico no criador de interface corrigiu meu problema
fonte
faça seu botão Digite - "Personalizado" e Desmarque - Realçado Ajuste a imagem e está pronto.
fonte
Para evitar definir quebra de linha do UIButton como Clip , use o padrão Truncate Middle
fonte