我正在创建一个UIViews网格,可以是4x4,5x5等。它们是使用嵌套的for
循环创建的。
UITapGestureRecognizer * touchUpInView = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(viewTouchHandler)];
for (int i = 0; i < cardsPerRow; i++) {
for (int j = 0; j < cardsPerRow; j++) {
UIView * myView = [[UIView alloc] initWithFrame:CGRectMake(((j + 1) * widthGap) + (j * width), (25 + ((i + 1) * heightGap)) + (i * height), width, height)];
[myView setTag:(i * cardsPerRow + j)];
[myView addGestureRecognizer:touchUpInView];
[myView setBackgroundColor:[UIColor redColor]];
[self.view addSubview:myView];
}
}
height
,heightGap
,width
和widthGap
都被定义为整数,只是控制视图之间的间距和视图的大小。基本上,我希望每个视图都能够响应用户点击它。我不确定UITapGestureRecognizer
是否是最佳方法,如果是,我如何参考以找出哪个视图被点击?我假设通过使用我已设置的标记并将其传递到viewTouchHandler
方法,但我如何从@selector
执行此操作以及如何在方法中引用它?或者我应该使用id
或UIView
代替标记?