Vous avez besoin de gérer un événement tactile depuis votre UIView. Pour ce faire, vous devez créer la sous-classe de UIView et ajoutez votre réalisation de touchesBegan: withEvent: méthode, par exemple ici plus simple:
// TouchSimpleView.h
@interface TouchSimpleView : UIImageView {
id delegate;
}
@property(retain) id delegate;
@end
@interface NSObject(TouchSimpleView)
-(void)didTouchView:(UIView *)aView;
@end
// TouchSimpleView.m
#import "TouchSimpleView.h"
@implementation TouchSimpleView
@synthesize delegate;
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
NSLog(@"touchesBegan!!! ");
if (delegate != nil && [delegate respondsToSelector:@selector(didTouchView:)]) {
[delegate didTouchView:self];
}
[super touchesBegan:touches withEvent:event];
}
@end
Ensuite, vous pouvez utiliser des vues de cette classe lorsque vous souhaitez traiter des touches, par exemple :
- (void)applicationDidFinishLaunching:(UIApplication *)application {
[window makeKeyAndVisible];
touchView = [[TouchSimpleView alloc] initWithFrame:CGRectMake(50, 50, 200, 300)];
touchView.delegate = self;
[window addSubview:touchView];
imageView =[[UIImageView alloc] initWithFrame:touchView.frame];
imageView.image = [UIImage imageNamed:@"image1.png"];
[touchView addSubview:imageView];
}
-(void)didTouchView:(UIView *)aView{
NSLog(@"view touched, changing image");
imageView.image = [UIImage imageNamed:@"image2.png"];
}
Dois-je déclarer touchView ou dois-je coller tout sauf [window ...]; dans la fonction (vide) applicationDidFin ....? –
Dans le morceau de code ci-dessus, il est censé TouchView et imageView a été déclarée dans le fichier h: //MyAppDelegate.h @interface MyAppDelegate: NSObject { UIWindow * fenêtre; UIImageView * imageView; TouchSimpleView * touchView; // ... Notez que vous pouvez utiliser des objets TouchSimpleView n'importe où, et pas seulement dans le délégué de l'application. Notez également que vous pouvez créer d'autres méthodes de délégué, par exemple envoyer aussi des cordons de contact, ou gérer non seulement touchBegan ... mais aussi touchMoved ou touchCanceled events. –
Vladimir