Clique em Evento em UIImageView programaticamente em ios


95

Estou exibindo uma imagem do código aqui está o código

UIImageView *preArrowImage =[[UIImageView alloc]init ];
preArrowImage.image =[UIImage imageNamed:@"arrowprev.png"];
preArrowImage.frame = CGRectMake(20, 60, 10, 30);
[self.view addSubview:preArrowImage];

Quero controlar o evento de toque no preArrowImage de maneira programática.



Respostas:


250

Objective-c

UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapDetected)];
singleTap.numberOfTapsRequired = 1;
[preArrowImage setUserInteractionEnabled:YES];
[preArrowImage addGestureRecognizer:singleTap];

-(void)tapDetected{
    NSLog(@"single Tap on imageview");
  }

SWIFT 4.2 / 5

let preArrowImage : UIImageView // also give it frame
let singleTap = UITapGestureRecognizer(target: self, action: #selector(tapDetected))
preArrowImage.isUserInteractionEnabled = true
preArrowImage.addGestureRecognizer(singleTap)

//Action
@objc func tapDetected() {
    print("Imageview Clicked")
}

para Swift 2 você deve substituir Selector("tapDetected")por:"tapDetected:"
datayeah

Por padrão, singleTap.numberOfTapsRequired = 1, Happy Coding Thanks
Ravi

'let singleTap = UITapGestureRecognizer (target: self, action: #selector (NavigationViewController.tapDetectedImage))'
Alex22

18

Basta adicionar um UITapGesturena imagem, mas lembre-se de tornar sua interação com o usuário Habilitada .

    UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self 
    action:@selector(singleTapGestureCaptured:)];
    [preArrowImage addGestureRecognizer:singleTap];
    [preArrowImage setMultipleTouchEnabled:YES];
    [preArrowImage setUserInteractionEnabled:YES];

6

Agora em Swift!

let singleTap = UITapGestureRecognizer(target: self, action: Selector("tapDetected"))
singleTap.numberOfTapsRequired = 1

preArrowImage.userInteractionEnabled = true
preArrowImage.addGestureRecognizer(singleTap)


//Action
func tapDetected() {
    println("Single Tap on imageview")
}

4

Swift 3

Em UIImageView, habilite UserInterAction

 override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {
        super.touchesEnded(touches, with: event)

        if let touch = touches.first {
            if touch.view == self.imgVwPostPreview { //image View property

                //Do your actions
                //self.delegate?.didClickOnCellImageView(indexPath: self.cellIndexPath!)
            }
        }
    }

3

Usando storyboard com vista no controlador de vista.
a visualização pode ser ImageView, UIView, UILabel, TextField ou outro controlador


Depois de selecionar um dos reconhecedores de gestos, arraste-o para o seu controlador.
Agora ele será exibido em "Estrutura de tópicos do documento" e cabeçalho do controlador de visualização xib.

Ícone de gesto na linha de saída do documento e xib
Arraste o gesto para UILable
Arraste o gesto para UILable


Método de criação manual (IBAction) no arquivo de cabeçalho


crie o método IBAction no arquivo de cabeçalho
Agora arraste-o do manipulador para o ícone de gesto no xib
Vincule-o ao ícone de gesto


0

Se o seu UIImageView é um IBOutlet que você obtém de um Storyboard ou Nib, você pode adicionar um UIGestureRecognizer à visualização da imagem, permitir a interação do usuário e conectar um IBAction ao reconhecedor de gestos.

Para obter mais informações, verifique minha resposta a esta pergunta: Como fazer um UIImageView no storyboard clicável (rápido)


0

Aqui está outra opção: trapaça.

Quer dizer, pense lateralmente.

Configure seu UIImage como quiser, recortado, ajuste de aspecto, o que for.

Sobreponha isso com um UIView (dimensões iguais, posição etc.)

Defina o plano de fundo como clearcolour e a classe como UIControl.

Aponte o evento interno de retoque para seu manipulador e pronto.


Ainda mais fácil do que um UIView: Use um botão e exclua o texto. ;)
Neph

0

Xamarin.iOS

UIImageView preArrowImage; // also give it frame
var singleTap = new UITapGestureRecognizer(TapDetected);
singleTap.ShouldReceiveTouch -= TapGesture_ShouldReceiveTouch;
singleTap.ShouldReceiveTouch += TapGesture_ShouldReceiveTouch;
preArrowImage.UserInteractionEnabled = true;
preArrowImage.AddGestureRecognizer(singleTap)

bool TapGesture_ShouldReceiveTouch(UIGestureRecognizer recognizer, UITouch touch)
{
    return true;
}

void TapDetected(UITapGestureRecognizer tapGestureRecognizer)
{
    print("Imageview Clicked")
}
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.