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

标签 ios uigesturerecognizer ios13 undo

iOS 13 中的新功能,三个手势被解释为请求撤消和重做:

  • 用三个手指双击表示撤消。

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

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

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

最佳答案

看起来有一个名为UIUndoGestureRecognizer的私有(private)类,它附加到UIEditingOverlayGestureView,它位于UITextEffectsWindow<内的UIInputSetContainerView。 (为了弄清楚这一点,我在 UndoManagerregisterUndo 处理程序中放置了一个断点,并尝试用三个手指向左滑动,然后在生成的堆栈跟踪和汇编代码中进行查看直到我找到手势识别器实例。)

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

关于ios - iOS 13 撤消/重做手势的手势识别器在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58547067/

相关文章:

ios - PDFKit 交换注释内容

ios - iPhone 上的凭据存储在哪里(用户名或用户 ID)?

ios - Iphone 4 不显示游戏背景

objective-c - Objective-C : Gesture Issue

ios - 在起点画一个矩形,然后按照我的 Action 在 Swift 中结束手势

ios - iOS 13 和 14 上的 NSKeyValuePopPendingNotificationLocal 崩溃

ios - 如何编辑 Realm 对象并保存编辑?

ios - 将手势 UITapGestureRecognizer 添加到 UILabel 后应用程序崩溃

ios - 在 SWIFT 4 中将文本字段限制为仅正整数

ios - 当从 iOS 13.1 中的 SceneDelegate 设置 RootViewController 时,UIElements 变为非事件状态