Coloquei uma imagem (UIImageView) na barra de navegação. Agora quero detectar o evento de toque e controlar o evento. Você poderia me dizer como posso fazer isso?
Obrigado.
ios
iphone
uiimageview
uitouch
ebaccount
fonte
fonte
Respostas:
Em termos práticos, não faça isso.
Em vez disso, adicione um botão com estilo personalizado (sem gráficos de botão, a menos que você especifique imagens) sobre o UIImageView. Em seguida, anexe quaisquer métodos que você deseja chamar para isso.
Você pode usar essa técnica para muitos casos em que realmente deseja que alguma área da tela atue como um botão em vez de mexer com o toque.
fonte
A
UIImageView
é derivado de aUIView
que é derivado de,UIResponder
portanto, está pronto para lidar com eventos de toque. Você vai querer fornecer ostouchesBegan
,touchesMoved
etouchesEnded
métodos e eles vão obter chamado se o usuário toca a imagem. Se tudo o que você deseja é um evento de toque, é mais fácil apenas usar um botão personalizado com a imagem definida como a imagem do botão. Mas se você quiser um controle de grão mais fino sobre torneiras, movimentos, etc., este é o caminho a percorrer.Você também vai querer ver mais algumas coisas:
Substitua
canBecomeFirstResponder
e retorne SIM para indicar que a visualização pode se tornar o foco dos eventos de toque (o padrão é NÃO).Defina a
userInteractionEnabled
propriedade como SIM. O padrão paraUIViews
é SIM, mas paraUIImageViews
NÃO, então você deve ativá-lo explicitamente.Se você deseja responder a eventos multitoque (ou seja, apertar, zoom, etc), você deve definir
multipleTouchEnabled
como SIM.fonte
userInteractionEnabled
como SIM na minha visualização dos pais. Consulte stackoverflow.com/questions/5887305/…Para adicionar um evento de toque a um UIImageView use o seguinte em seu .m
espero que ajude.
fonte
Você também pode adicionar um UIGestureRecognizer. Ele não exige que você adicione um elemento adicional em sua hierarquia de visualização, mas ainda fornece a você todo o código bem escrito para lidar com eventos de toque com uma interface bastante simples:
fonte
Estive em diferentes tópicos nas últimas horas tentando encontrar uma solução para o meu problema, sem sucesso. Vejo que muitos desenvolvedores compartilham esse problema e acho que as pessoas aqui sabem disso. Tenho várias imagens dentro de um
UIScrollView
, tentando obter eventos de toque nelas.não obtendo eventos de um
UIImangeView
, mas recebo um evento de um semelhanteUILable
com parâmetros muito semelhantes que estou definindo para ele. sob IOS 5.1.Já fiz o seguinte:
UIImageView
.UIImageView
criar subclasses , mas não ajudou em nada.Anexando algum código abaixo, neste código eu inicializo a
UIImageView
eUILabel
, o rótulo funciona bem em termos de eventos de disparo. Tentei evitar códigos irrelevantes. Obrigado pessoal IlanE o método que trata o evento:
Como disse, a torneira de etiqueta é recebida.
fonte
Em vez de fazer um UIImageView tocável e colocá-lo na barra de navegação, você deve apenas criar um UIBarButtonItem, que pode ser feito a partir de um UIImageView.
Primeiro faça a visualização da imagem:
Em seguida, faça o item barbutton fora de sua visualização de imagem:
Em seguida, adicione o item do botão da barra à sua barra de navegação:
Lembre-se de que esse código vai para o controlador de visualização, que está dentro de um array de controlador de visualização do controlador de navegação. Então, basicamente, este "item de botão da barra de aparência de imagem tocável" só aparecerá na barra de navegação quando este controlador de visualização estiver sendo mostrado. Quando você pressiona outro controlador de visualização, este item do botão da barra de navegação irá desaparecer ~
fonte
O que você pode querer fazer é substituir o
touchesBegan:withEvent:
método daUIView
(ou subclasse) que contém suaUIImageView
subvisão.Dentro desse método, teste se algum dos
UITouch
toques está dentro dos limites daUIImageView
instância (digamos que seja chamadoimageView
).Ou seja, o
CGPoint
elemento faz[touch locationInView]
interseção com oCGRect
elemento[imageView bounds]
? Verifique a funçãoCGRectContainsPoint
para executar este teste.fonte
Primeiro você deve colocar um UIButton e então pode adicionar uma imagem de fundo para este botão ou você precisa colocar um UIImageView sobre o botão.
ou
Você pode adicionar o gesto de toque a um UIImageView para obter a ação de clique ao tocar no UIImageView.
fonte
Para aqueles que procuram uma solução Swift 4 para esta resposta. Você pode usar o seguinte para detectar um evento de toque em um UIImageView.
Você precisará definir seu seletor da seguinte maneira:
fonte
Adicione um gesto nessa imagem view.add nessa visualização, então ele detectaria um gesto na imagem também. Você pode tentar com o método delegado de evento de toque, então, nesse caso, ele também pode estar detectando. obrigado
fonte