如何识别UITouch的Touch Up Inside手势

时间:2010-02-06 23:42:32

标签: iphone cocoa-touch

我正在制作网格视图。它是tableview的子类,并为每个单元格布置多个子单元(列)。这一切都很好。

现在,我需要检测何时点击单个子单元。我在网格视图中覆盖了touchesEnded。有没有办法可以拍摄NSSet UITouch个{{1}}个物体并检测它是否是内部修饰或其他姿势?

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

3 个答案:

答案 0 :(得分:1)

UIControlEvents这样的{p> UIControlEventTouchUpInsideUIControl个对象一起使用。在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以获取事件。有了这个,您就可以完全控制您感兴趣的所有事件。然后你可以选择将它们放在屏幕上,实现起来并不是很难。

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