Haga clic en Evento en UIImageView mediante programación en ios


95

Estoy mostrando una imagen del código aquí está el código

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

Quiero manejar el evento táctil en preArrowImage mediante programación.


Esto puede ser de alguna utilidad stackoverflow.com/questions/9008975/…
Gaz_Edge

Respuestas:


250

C objetivo

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, debe reemplazarlo Selector("tapDetected")con:"tapDetected:"
datayeah

Por defecto singleTap.numberOfTapsRequired = 1, Happy Coding Thanks
Ravi

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

18

Simplemente agregue un UITapGestureen la imagen, pero recuerde que debe habilitar UserInteraction .

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

6

¡Ahora en 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

En 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 con vista en el controlador de vista.
la vista puede ser ImageView, UIView, UILabel, TextField u otro controlador


Después de seleccionar uno de los reconocedores de gestos, arrástrelo a su controlador.
Ahora se mostrará en "Esquema del documento" y el encabezado del controlador de vista xib.

Icono de gesto en la línea de salida del documento y xib
Arrastre el gesto a UILable
Arrastre el gesto a UILable


Crear manualmente el método (IBAction) en el archivo de encabezado


crear el método IBAction en el archivo de encabezado
Ahora arrástrelo desde el controlador al icono de gesto en xib
Vincularlo con el icono de gesto



0

Aquí hay otra opción: hacer trampa.

Quiero decir, piensa lateralmente.

Configure su UIImage como desee, recortado, con ajuste de aspecto, lo que sea.

Superponga esto con una UIView (dimensiones iguales, posición, etc.)

Establezca el fondo en clearcolour y la clase en UIControl.

Apunta el evento de retoque interno a tu manejador y listo.


Incluso más fácil que una UIView: use un botón y elimine el 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")
}
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.