Вы должны попробовать установить это свойство:
img.userInteractionEnabled = YES;
Но этого недостаточно,
потому что методы:
– touchesBegan:withEvent:
– touchesMoved:withEvent:
– touchesEnded:withEvent:
из класса UIResponder (базовый класс UIVIew), а не из UIViewController.
Поэтому, если вы хотите, чтобы они вызывались, вы должны определить подкласс UIView (или UIImageView в вашем случае), где вы переопределяете базовые методы.
Пример:
MyImageView.h
@interface MyImageView : UIImageView {
}
@end
MyImageView.m
@implementation MyImageView
- (id)initWithFrame:(CGRect)aRect {
if (self = [super initWithFrame:rect]) {
// We set it here directly for convenience
// As by default for a UIImageView it is set to NO
self.userInteractionEnabled = YES;
}
return self;
}
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
// Do what you want here
NSLog(@"touchesBegan!");
}
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
// Do what you want here
NSLog(@"touchesEnded!");
}
@end
Затем вы можете создать экземпляр MyImageView в вашем примере с помощью контроллера представления:
img = [[MyImageView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)];
[self.view addSubview:img];
[img release];
И вы должны увидеть сенсорные события (также при условии, что self.view, конечно, для userInteractionEnabled установлено значение YES).