在iOS 5中获取UIImageView上的触摸事件时出现问题

在iOS 5中获取UIImageView上的触摸事件时出现问题,ios,uiimageview,Ios,Uiimageview,在UIImageView上检测触摸事件时遇到问题。我对UIImageView进行了子分类,并覆盖了canBecomeFirstResponder、TouchedBegind和TouchedSended: @implementation ImageViewNext - (id)initWithFrame:(CGRect)frame { self = [super initWithFrame:frame]; if (self) { // Initialization

在UIImageView上检测触摸事件时遇到问题。我对UIImageView进行了子分类,并覆盖了canBecomeFirstResponder、TouchedBegind和TouchedSended:

@implementation ImageViewNext

- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        // Initialization code
        self.userInteractionEnabled = YES;
    }
    return self;
}

-(BOOL)canBecomeFirstResponder
{
    return YES;
}

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    NSLog(@"Touches Began event");
}

-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
    NSLog(@"Touches Ended");
}
我已经确保所有父视图都启用了用户交互

但我不知道我的事件


我试图在这里找到解决办法,但没有任何运气。但在我的搜索中,我发现有些人使用“UIgestureRecognitizer”来获得同样的效果。因此,作为一个附带问题,使用覆盖方法或使用UIGestureRecognizer的“正确”解决方案是什么?我不喜欢一个普通按钮有图像的解决方案,所以请远离这些帖子:)

我不知道为什么你没有得到触摸事件,但使用UIGestureRecognitor回答问题的另一部分将大大简化你对任何有识别器可用的手势的触摸处理。它使用起来更简单,而且您需要的代码也更少


此外,如果将来您需要在不同的触摸事件之间进行协商(是拖动类型的问题),那么所有这些逻辑都会得到简单的处理。

您确定调用了您的
initWithFrame:
?UIView有两个指定的初始值设定项,
initWithFrame:
initWithCoder
,具体取决于它们的创建方式

你说得对,initWithFrame:没有被调用!谢谢,这解决了我的问题:)