我在UIImageView上检测触摸事件时遇到问题。我已经分类了UIImageView并且覆盖了canBecomeFirstResponder,touchBegan和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?我不喜欢正常按钮被给予图像的解决方案,所以请保留这些帖子:)
答案 0 :(得分:1)
您确定已拨打initWithFrame:
吗? UIViews有两个指定的初始值设定项initWithFrame:
和initWithCoder
,具体取决于它们的创建方式。
答案 1 :(得分:0)
我不知道为什么你没有得到触摸事件,但是使用UIGestureRecognizer回答你问题的其他部分将大大简化你可以使用识别器的任何手势的触摸处理。它使用起来更简单,你需要更少的代码。
此外,如果将来你需要在不同的触摸事件之间进行协商(是否只是拖动类型问题),那么所有这些逻辑都会被处理掉。