我有一个显示在屏幕上的子视图图像网格;它基本上是以棋盘方式在屏幕上布置的一系列图像。我只是想为每个图像子视图添加手势识别器,以便当用户触摸其中一个图像子视图时,我可以检索子视图,即坐标、标签等。我的视图层次结构如下:
- 超级视图
- 一个 gridContainer 视图
- 和每个单独的子视图 - 带有图像
在查看了苹果文档之后,似乎我应该能够向 gridContainer 视图添加一个手势识别器,并且每个子视图(带有图像)都应该继承手势识别器。到目前为止,这是我尝试过的:我已经在 getter 中分配了初始化网格容器视图。此外,在 getter 中,我调用了我的 createGesture 方法,该方法应该将手势识别器添加到 gridContainer 视图。但是,我在运行时遇到错误,指向我的操作 handleSingleTap 方法。它读取 EXC_BAD_EXCESS。还值得注意的是,我不希望我的 gridContainer 视图之外的视图响应任何触摸事件。提前感谢您的帮助。
这是我要实现的代码:
- (UIView *)gridContainerView
{
if (!_gridContainerView)_gridContainerView = [[UIView alloc] init];
[self createGesture];
return _gridContainerView;
}
- (void)createGesture
{
UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc]
initWithTarget:self.gridContainerView
action:@selector(handleSingleTap:)];
singleTap.numberOfTapsRequired = 1;
[self.gridContainerView addGestureRecognizer:singleTap];
}
如果您需要查看任何其他代码以使其有意义,请告诉我。
编辑:包括 handleSingleTap 方法:
- (IBAction)handleSingleTap:(id)sender
{
CGPoint tapPoint = [sender locationInView:sender];
NSLog(@"sender = %@",sender);
NSLog(@"tappoint = %@", tapPoint);
}