我正在做一个网格视图。它将子视图分类并为每个单元布置多个子单元(列)。这一切工作正常。如何识别从UITouch触摸手势里面
现在,我需要检测一个单独的子单元何时被点击。我在网格视图中覆盖了touchesEnded。有没有办法让我可以采取的UITouch
对象,并检测它是否是一个内部触摸或其他手势?
我可以编写自定义代码,但它可能很难让它完美。
我正在做一个网格视图。它将子视图分类并为每个单元布置多个子单元(列)。这一切工作正常。如何识别从UITouch触摸手势里面
现在,我需要检测一个单独的子单元何时被点击。我在网格视图中覆盖了touchesEnded。有没有办法让我可以采取的UITouch
对象,并检测它是否是一个内部触摸或其他手势?
我可以编写自定义代码,但它可能很难让它完美。
UIControlEvents
像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
}
}
}
}
假设您只支持视图中的单点触摸,touchesEnded
表示用户将他或她的手指从视图中移开。无论触摸位于视图的内部还是外部,或视图的特定部分都是您应该测试的内容。
根据我的经验,您需要为每个单元格创建一个自定义视图,而不是将TableView继承以获取事件。有了这个,你可以完全控制你感兴趣的所有事件。然后,您可以选择将它们放在屏幕上,这不是很难实现。
但让我们来看看别人的答案,如果有任何;)