Estou tentando atribuir um UIImageView
a uma ação quando o usuário toca nela.
Eu sei como criar uma ação para a UIButton
, mas como eu poderia imitar o mesmo comportamento de a UIButton
, mas usando a UIImageView
?
ios
swift
uiimageview
user3706773
fonte
fonte
@objc
modificador à função.Você precisa adicionar um reconhecedor de gestos (para tocar, use UITapGestureRecognizer , para tocar e segurar, use UILongPressGestureRecognizer ) ao seu
UIImageView
.E implemente o método seletor como:
fonte
Você pode adicionar um
UITapGestureRecognizer
ao imageView, basta arrastar um para o Storyboard / xib, arraste com a tecla Ctrl pressionada a partir do imageView para o gestoRecognizer e com a tecla Ctrl pressionada do gestoRecognizer para o arquivo Swift para criar umIBAction
.Você também precisará ativar as interações do usuário no
UIImageView
, conforme mostrado nesta imagem:fonte
UIImageView
não responde a toques por padrão. Você também precisa ativar as interações do usuário.Para o Swift 2.0 e superior, faça isso
fonte
Código Swift4
Experimente alguns novos métodos de extensão:
Agora, sempre que quisermos adicionar um
UITapGestureRecognizer
a umUIView
ouUIView
subclasse comoUIImageView
, podemos fazê-lo sem criar funções associadas para seletores!Uso:
fonte
Você pode simplesmente definir a imagem do
UIButton
para o que você normalmente colocaria em um arquivoUIImageView
. Por exemplo, onde você faria:Você poderia usar:
Então, aqui está a aparência do seu código:
O melhor de usar esse método é que, se você precisar carregar a imagem de um banco de dados, poderá definir o título do botão antes de definir a imagem:
Para informar aos usuários que você está carregando a imagem
fonte
É necessário adicionar preguiçoso para que o TapGestureRecognizer se registre,
pois o 'self' em UITapGestureRecognizer (target: self ...) será nulo se não for um var preguiçoso. Mesmo se você definir isUserInteractionEnable = true, ele não será registrado sem a variante lenta.
fonte
Você pode colocar um
UIButton
fundo transparente por cima doUIImageView
e ouvir um toque no botão antes de carregar a imagemfonte
Código Swift 4
Etapa 1 no ViewdidLoad ()
Etapa 2 Adicionar função a seguir
Está testado e funcionando corretamente
fonte
Sugiro colocar o botão invisível (opacidade = 0) na visualização de imagem e depois manipular a interação no botão.
fonte