Ios 在较低层上的对象上执行手势

Ios 在较低层上的对象上执行手势,ios,swift,z-index,uigesturerecognizer,Ios,Swift,Z Index,Uigesturerecognizer,我在屏幕上有两个可拖动的元素,tableview A和imageview B。A在层次结构中位于B之上,并且必须始终保持这样。下图概述了这一问题 在我开始编写代码之前,上面提到的是一个可行且可信的解决方案,还是有一种聪明的优先级设置,如果交互位于a和B之上,它总是会触发B手势 感谢澄清,重复的答案帮助我找到了如下解决方案 将手势放在主视图上,然后在手势识别器过程中确定执行手势的位置以及是否让手势执行任何操作 func doLongPressGesture(sender: UILongPress

我在屏幕上有两个可拖动的元素,tableview A和imageview B。A在层次结构中位于B之上,并且必须始终保持这样。下图概述了这一问题

在我开始编写代码之前,上面提到的是一个可行且可信的解决方案,还是有一种聪明的优先级设置,如果交互位于a和B之上,它总是会触发B手势


感谢

澄清,重复的答案帮助我找到了如下解决方案

将手势放在主视图上,然后在手势识别器过程中确定执行手势的位置以及是否让手势执行任何操作

func doLongPressGesture(sender: UILongPressGestureRecognizer) {    
    let touchLocation = sender.locationInView(self.view)
    if CGRectContainsPoint(myChosenObject.frame, touchLocation) {
        ....
    }
}

您的手势配置在哪里?分别在每个视图中还是在主视图中?我建议您选择最后一个选项,以便在两个视图中对手势有相同的操作。因此,当访问手势调用的方法时,您可以访问接触点:CGPoint touchPoint=[GestureRecognitor locationInView:self.view];之后,您可以尝试[imageViewB pointInside:TouchPointWithEvent:nil];检查imageview B是否包含该触点。如果这是真的,那么移动该视图,而不是A。谢谢大家-对pointInside的引用为我提供了一个很好的起点来解决这个问题。我是否可以确认我将手势添加到主视图中,然后在调用手势时,我检查哪些元素包含被触摸的点,并确定其中哪些元素被分配了动作?这非常有效-尽管我在Swift 2.0中使用了cRectContainsPoint(),但pointInside是一条线索