2011-02-08 15 views
8

Sé cómo implementar touchesBegan para UIImageViewImplementar UITouchDown para UIImageView

es posible implementar UITouchDown para UIImageView? (Sé que puedo usar touchesBegan en lugar de UITouchDown pero quiero poner en práctica UITouchDown)

+0

Por TouchDown, ¿quieres decir 'UIControlEventTouchDown'? – Anurag

+0

sí me refiero a UIControlEventTouchDown –

Respuesta

13

Use un UIButton.

UIButton *aButton = [UIButton buttonWithType:UIButtonTypeCustom]; 
[aButton setImage:someUIImage forState:UIControlStateNormal]; 
[aButton addTarget:self action:@selector(aMethod) forControlEvents:UIControlEventTouchUpInside]; 

[self.view addSubview:aButton]; 

Alternativa a UIButton (método más largo)

A UIControl implementa las interacciones del usuario y soporte para ya las interacciones del usuario de grano fino. Puede combinar la funcionalidad de UIImageView y UIControl para lograr esto, ya que ambas son subclases de UIView.

Para obtener este comportamiento, agregue un objeto de UIImageView como una subvista a un UIControl de modo que la imagen esté completamente cubierta. A continuación, agregue un controlador de eventos a este control usando addTarget:action:forControlEvents:. He aquí un ejemplo:

// assuming the image view object exists 
UIImageView *anImageView = ..; 

// create a mask that the covers the image exactly 
UIControl *mask = [[UIControl alloc] initWithFrame:anImageView.frame]; 

// add the image as a subview of this mask 
CGSize imageSize = anImageView.frame.size; 
anImageView.frame = CGRectMake(0, 0, imageSize.width, imageSize.height); 
[mask addSubview:anImageView]; 

// add a target-action for the desired control events to this mask 
[mask addTarget:self action:@selector(someMethod:) forControlEvents:UIControlEventTouchUpInside]; 

// add the mask as a subview instead of the image 
[self.view addSubview:mask]; 
+0

Gracias uso el método más largo –

+0

Utilice GestureRecognizer: http://stackoverflow.com/a/3907961/860488 –

1

No puedes.

eventos de control tales como UIControlEventTouchDown etc están disponibles para UIControl's objetos secundarios como UIButton, UITextField etc. UIImageView es una UIView y por lo tanto no puede generar notificaciones de control.

Tienes que usar touchesBegan y co.

2

Puede utilizar UITapGestureRecognizer, en lugar de crear a medida UIButton.

0

eventos de control como UIControlEventTouchDown, etc. están disponibles para objetos secundarios de UIControl como UIButton, UITextField, etc. UIImageView es una UIView y, por lo tanto, no puede generar notificaciones de control.