iOS 13 撤消/重做手势的手势识别器在哪里?

mat*_*att 5 undo uigesturerecognizer ios ios13

在 iOS 13 中,三个手势被解释为请求撤销和重做:

  • 三指双击表示撤销。

  • 三指向左滑动表示撤销。

  • 用三个手指快速右转意味着重做。

检测这些手势的手势识别器在哪里?我该怎么做才能覆盖它们、关闭它们或在它们与我自己的手势之间进行仲裁?

Tyl*_*ler 7

看起来有一个名为的私有类UIUndoGestureRecognizer附加到 a 中UIEditingOverlayGestureView,它位于 aUIInputSetContainerView内部UITextEffectsWindow。(为了解决这个问题,我在 anUndoManagerregisterUndo处理程序中放置了一个断点并尝试用三个手指向左滑动,然后在生成的堆栈跟踪和汇编代码中四处寻找,直到找到手势识别器实例。)

您可能可以使用 in 方法在UIGestureRecognizerDelegate手势识别器和这些系统识别器之间进行仲裁,并且您可以editingInteractionConfiguration在视图控制器或视图中重写以返回.none以便完全关闭它们。

  • 因此,我的窗户前面有一个看不见的窗户,它的工作(或它的工作之一)是容纳六个检测这些手势的手势识别器。这正是我想知道的!我通过在断点处暂停并说“UIApplication.shared.windows[1].subviews[0].subviews[1].gestureRecognizers”获得了它们的列表。你的旅费可能会改变。 (2认同)