检测UIPanGestureRecognizer开始和结束的UIView网格正方形

时间:2014-05-07 18:20:38

标签: ios objective-c uiview uipangesturerecognizer

我正在设计一个在网格上发生的游戏。网格需要响应从一个正方形开始而在另一个正方形结束的平移手势。我有一个名为GameVC的自定义视图控制器类,它包含子类GameGridSquare的UIViews网格。我希望游戏在例如平移手势开始并在相邻方块中结束时执行动作。我有一个连接属性的故事板,按行和列命名每个方块:self.A1,self.A2,... self.H7,self.H8。在识别出平移手势时,我希望GameVC接收GameGridSquares UIGestureRecognizerStateBeganUIGestureRecognizerStateEnded两个-(void)validatePanGestureFrom:(GameGridSquare*)beginSquare to:(GameGridSquare*)endSquare ,以便它可以确定相应的操作,如下所示:

GameGridSquares

最好的方法是什么?我的识别器是功能性和返回坐标,但我认为我需要探索命中测试。

如果我向个人GameVC添加识别器,我会得到不希望的结果。例如,以A1开始并以B2结束的平底锅将仅由A1识别。这表明我需要UIGestureRecognizerDelegate上的平移识别器,可以检测手势何时开始并以不同的子视图结束。

从我读过的内容来看,我认为UIPanGestureRecognizer协议在这里可能会有所帮助。我也明白自定义{{1}}子类允许我覆盖hitTest:withEvent,但我不知道从哪里开始。关于我应该如何处理的任何想法?

1 个答案:

答案 0 :(得分:1)

这就是我追求的目标:

Find which child view was tapped when using UITapGestureRecognizer

UIView* view = gestureRecognizer.view;
CGPoint loc = [gestureRecognizer locationInView:view];
UIView* subview = [view hitTest:loc withEvent:nil];