【问题标题】:Detecting UIView grid squares where a UIPanGestureRecognizer begins and ends检测 UIPanGestureRecognizer 开始和结束的 UIView 网格方块
【发布时间】:2014-05-07 18:20:37
【问题描述】:

我正在设计一个在网格上进行的游戏。网格需要响应以一个正方形开始并以另一个正方形结束的平移手势。我有一个名为GameVC 的自定义视图控制器类,它包含子类GameGridSquare 的UIViews 网格。我希望游戏在例如平移手势在相邻方格中开始和结束时执行动作。我有一个情节提要,其中包含按行和列命名每个方块的属性:self.A1,self.A2,... self.H7,self.H8。当识别到平移手势时,我希望GameVC 接收两个GameGridSquares,其中UIGestureRecognizerStateBeganUIGestureRecognizerStateEnded 以便它可以确定适当的操作,如下所示:

-(void)validatePanGestureFrom:(GameGridSquare*)beginSquare 
                           to:(GameGridSquare*)endSquare

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

如果我将识别器添加到个人 GameGridSquares,我会得到不想要的结果。例如,一个以 A1 开始并以 B2 结束的盘将仅由 A1 识别。这表明我需要GameVC 上的平移识别器,它可以检测手势何时在单独的子视图中开始和结束。

根据我的阅读,我相信UIGestureRecognizerDelegate 协议在这里可能会有所帮助。我也知道自定义 UIPanGestureRecognizer 子类将允许我覆盖 hitTest:withEvent 但我不知道从哪里开始。关于我应该如何处理这个问题的任何想法?

【问题讨论】:

    标签: ios objective-c uiview uipangesturerecognizer


    【解决方案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];
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-04-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-07
      • 1970-01-01
      相关资源
      最近更新 更多