我有一个子屏幕图像的网格显示在屏幕上;它基本上是以棋盘方式放置在屏幕上的一系列图像。我只是想为这些图像子视图中的每一个添加手势识别器,以便当用户触摸其中一个图像子视图时,我可以检索子视图,即坐标,标签等。我的视图层次结构如下所示:如何将手势识别器添加到一系列子视图?
- 超级视图
- 一个gridContainer视图
- 和每个个体子视图 - 与图像
看着苹果文档后,它好像我应该能够手势识别添加到gridContainer视图和每个子视图 - 与im年龄 - 应该继承手势识别器。到目前为止,这是我尝试过的:我已经在getter中分配了初始化网格容器视图。另外,在getter中,我调用了我的createGesture方法,该方法应该将一个手势识别器添加到gridContainer视图。但是,我在运行时收到一个错误,指向我的actionSingleTap方法。它读取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);
}
所以我应该创建一个自定义类,它是UIView的子视图?我是否应该将我的gridContainerView放入此自定义类中,然后在我需要访问时在控制器中调用它? – Scott 2012-04-21 13:29:41
不是子视图,而是子类。 – Till 2012-04-21 14:43:21