Ios UIPangestureRecognitor不使用uicontrol事件

Ios UIPangestureRecognitor不使用uicontrol事件,ios,uigesturerecognizer,draggable,target,uipangesturerecognizer,Ios,Uigesturerecognizer,Draggable,Target,Uipangesturerecognizer,我制作了一个自定义UIControl,它使用UIControl事件识别某些交互。一切都很好。现在我还想让我的UIControl识别UIPangestureRecognitor,下面是代码 fieldView.addTarget(self, action: #selector(willSelectField(sender:)), for: .touchDown) fieldView.addTarget(self, action: #selector(didSelectField(sender:))

我制作了一个自定义UIControl,它使用UIControl事件识别某些交互。一切都很好。现在我还想让我的UIControl识别UIPangestureRecognitor,下面是代码

fieldView.addTarget(self, action: #selector(willSelectField(sender:)), for: .touchDown)
fieldView.addTarget(self, action: #selector(didSelectField(sender:)), for: .touchUpInside)
fieldView.addTarget(self, action: #selector(canceledFieldSelection(sender:)), for: .touchUpOutside)
fieldView.addGestureRecognizer(UIPanGestureRecognizer(target: self, action: #selector(draggingField(gesture:))))
因此,当我点击我的fieldView时,自定义UIControl触地将被识别。如果我不开始平移,触碰内侧和触碰外侧也会被识别。但如果我平移,例如让它离开我的fieldView,则不会触发touchUpOutside

注意:touchDragInside不是替代品,因为它只识别约100px范围内的拖动。

请参阅:

如果手势识别器识别出其手势,则视图的其余触摸将被取消


您可以尝试将cancelsTouchesInView设置为false,或在视图中用:覆盖touchesCancelled。\uuuuWith。

我尝试过,但touchesCancelled方法不会被调用,而且我也找不到在该方法中区分touchUpInside和TouchUpOutside的方法添加cancelsTouchesInView对我有效。我有一个UIControl子类,正在使用UIPanGesture/UILongPress手势组合来驱动sendAction。。。。我在两个GR上都设置了该属性