2010-02-06 70 views
3

我正在做一个网格视图。它将子视图分类并为每个单元布置多个子单元(列)。这一切工作正常。如何识别从UITouch触摸手势里面

现在,我需要检测一个单独的子单元何时被点击。我在网格视图中覆盖了touchesEnded。有没有办法让我可以采取的UITouch对象,并检测它是否是一个内部触摸或其他手势?

我可以编写自定义代码,但它可能很难让它完美。

回答

1

UIControlEventsUIControlEventTouchUpInside用来与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 
      } 
     } 

    } 
} 
0

假设您只支持视图中的单点触摸,touchesEnded表示用户将他或她的手指从视图中移开。无论触摸位于视图的内部还是外部,或视图的特定部分都是您应该测试的内容。

0

根据我的经验,您需要为每个单元格创建一个自定义视图,而不是将TableView继承以获取事件。有了这个,你可以完全控制你感兴趣的所有事件。然后,您可以选择将它们放在屏幕上,这不是很难实现。

但让我们来看看别人的答案,如果有任何;)