您需要处理来自 UIView 的触摸事件。为此,您应该创建 UIView 的子类并添加您对touchesBegan:withEvent:方法的实现,这里是最简单的示例:
// 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
然后,您可以在要处理触摸时使用此类的视图,例如:
- (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"];
}