我确保我的自定义UIImageView和UIImageView本身的所有超视图都有userInteractionEnabled = YES;
同样在笔尖中,所有视图和子视图都有userInteractionEnabled = YES;
但出于某种原因,当我点击UIImageView时,这些从未被调用过:
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
NSLog(@"check!");
}
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
NSLog(@"other check");
}
我有一个UIView,可以作为某些子视图的分组。这可能是个问题吗?
答案 0 :(得分:2)
这只是一个猜测 - 在视图层次结构中的某个地方是否有UIScrollView? UIScrollViews不传递普通视图等触摸事件,您必须将其子类化并实现自定义touchesBegan方法。你可以找到有关here的信息 - 这是一个问题,让我第一次遇到它时刮了我的头,谷歌搜索几个小时。
答案 1 :(得分:2)
过了一会儿,我发现了以下问题:
我有一个UIView,我曾经将一些UIImageViews组合在一起,所以我可以通过仅移动UIView来同时移动所有这些。我做了UIView 0.01 x 0.01大而它没有clipToBounds。当我点击超出他们的超级视图边界的子视图时,UIView,没有在这些子视图上收到的触摸事件。我不知道是否有任何触摸事件。
因此,如果您遇到同样的问题,请确保您的触摸发生在适合超视图的区域。在我的情况下,我只是将UIView分组更大,使触摸敏感区域更大。在那之后,它奏效了。我现在稍微记得Apple已经在某个地方的文档中提到过,子视图可能会在他们的超级视图之外绘制,但触摸事件只有在超级视图的矩形中才会被识别。
答案 2 :(得分:1)
看起来你有一个拼写错误:正确的选择器名称是'touchesBegan'。您是以编程方式还是通过笔尖添加此视图?
答案 3 :(得分:1)
touchesBegun
应为touchesBegan
,但我认为这只是一个错字?
部署,通常触及不通过表示压力CPU 。尝试使用Instruments测试应用程序的性能。