2011-02-08 7 views
8

Je sais comment mettre en œuvre touchesBegan pour UIImageViewMettre en œuvre UITouchDown pour UIImageView

est-il possible de mettre en œuvre UITouchDown pour UIImageView? (Je sais que je peux utiliser touchesBegan au lieu de UITouchDown mais je veux mettre en œuvre UITouchDown)

+0

Par TouchDown, voulez-vous dire 'UIControlEventTouchDown'? – Anurag

+0

oui je veux dire UIControlEventTouchDown –

Répondre

13

Utilisez un UIButton.

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

[self.view addSubview:aButton]; 

alternative à UIButton (méthode plus)

A UIControl met en oeuvre des interactions de l'utilisateur et le support pour les interactions des utilisateurs à grains fins déjà. Vous pouvez combiner les fonctionnalités d'un UIImageView et d'un UIControl pour y parvenir puisque les deux sont des sous-classes de UIView. Pour obtenir ce comportement, ajoutez un objet de UIImageView en tant que sous-vue à un UIControl afin que l'image soit entièrement couverte. Ajoutez ensuite un gestionnaire d'événements à ce contrôle en utilisant addTarget:action:forControlEvents:. Voici un exemple:

// 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

Merci d'utiliser la méthode plus longue –

+0

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

1

Tu ne peux pas.

événements de contrôle tels que UIControlEventTouchDown etc sont disponibles pour UIControl's objets enfants comme UIButton, UITextField etc. UIImageView est un UIView et par conséquent ne peuvent pas générer des notifications de contrôle. Vous devez utiliser touchesBegan et co.

2

Vous pouvez utiliser UITapGestureRecognizer, au lieu de créer la coutume UIButton.

0

Les événements de contrôle tels que UIControlEventTouchDown etc sont disponibles pour les objets enfants UIControl tels que UIButton, UITextField, etc. UIImageView est un UIView et ne peut donc pas générer de notifications de contrôle.

Questions connexes