我正在设计一个在网格上发生的游戏。网格需要响应从一个正方形开始而在另一个正方形结束的平移手势。我有一个名为GameVC
的自定义视图控制器类,它包含子类GameGridSquare
的UIViews网格。我希望游戏在例如平移手势开始并在相邻方块中结束时执行动作。我有一个连接属性的故事板,按行和列命名每个方块:self.A1,self.A2,... self.H7,self.H8。在识别出平移手势时,我希望GameVC
接收GameGridSquares
UIGestureRecognizerStateBegan
和UIGestureRecognizerStateEnded
两个-(void)validatePanGestureFrom:(GameGridSquare*)beginSquare
to:(GameGridSquare*)endSquare
,以便它可以确定相应的操作,如下所示:
GameGridSquares
最好的方法是什么?我的识别器是功能性和返回坐标,但我认为我需要探索命中测试。
如果我向个人GameVC
添加识别器,我会得到不希望的结果。例如,以A1开始并以B2结束的平底锅将仅由A1识别。这表明我需要UIGestureRecognizerDelegate
上的平移识别器,可以检测手势何时开始并以不同的子视图结束。
从我读过的内容来看,我认为UIPanGestureRecognizer
协议在这里可能会有所帮助。我也明白自定义{{1}}子类允许我覆盖hitTest:withEvent,但我不知道从哪里开始。关于我应该如何处理的任何想法?
答案 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];