0

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

@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");
}

我确保所有父视图都启用了用户交互。

但我没有得到我的事件?

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

4

2 回答 2

1

你确定你initWithFrame:的被叫?UIViews 有两个指定的初始化器,initWithFrame:initWithCoder,这取决于它们是如何创建的。

于 2012-06-07T11:16:24.037 回答
0

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

此外,如果将来您需要在不同的触摸事件之间进行协商(是否点击拖动类型的问题),那么所有这些逻辑都可以轻松处理。

于 2012-06-07T11:13:10.327 回答