我正在制作网格视图。它是tableview的子类,并为每个单元格布置多个子单元(列)。这一切都很好。
现在,我需要检测何时点击单个子单元。我在网格视图中覆盖了touchesEnded。有没有办法可以拍摄NSSet
UITouch
个{{1}}个物体并检测它是否是内部修饰或其他姿势?
我可以编写自定义代码,但可能很难完美。
答案 0 :(得分:1)
UIControlEvents
这样的{p> UIControlEventTouchUpInside
与UIControl
个对象一起使用。在UIView
中,您需要进行自己的测试。
现在我不知道你是如何构建你的网格视图,或者你想要检测到什么样的触摸,但通常你需要有这样的东西。这样可以查找单击并点击了哪个单元格。
- (void) touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
if ([touches count] == 1) {
UITouch * touch = [touches anyObject];
if ([touch tapCount] == 1) {
// This is a simple tap
CGPoint point = [touch locationInView:self.view];
GridCell * cell = nil;
for (GridCell * aCell in cells) {
if (CGRectContainsPoint(aCell.frame, point)) {
cell = aCell;
break;
}
}
if (cell) {
// The tap was inside this cell
}
}
}
}
答案 1 :(得分:0)
假设您只支持视图中的单点触控,touchesEnded
表示用户从视图中移开了他或她的手指。无论触摸是在视图内部还是外部,还是视图的特定部分,都应该进行测试。
答案 2 :(得分:0)
根据我的经验,您需要为每个单元格创建自定义视图,而不是继承TableView以获取事件。有了这个,您就可以完全控制您感兴趣的所有事件。然后你可以选择将它们放在屏幕上,实现起来并不是很难。
但如果有的话,让我们看看别人的答案;)