ios - 带有自定义撤消管理器的三指撤消手势
问题描述
我正在尝试使用自定义撤消管理器处理三指手势。使用窗口提供的默认撤消管理器,通过 UIResponder 链解决,可以完美地工作。一旦我尝试在视图控制器中使用自己的撤消管理器,我就会遇到问题。(背景:我想根据视图的状态在不同的管理器之间切换,所以不能使用窗口提供的单个撤消管理器。)
我做了什么:
- 在我的视图控制器中覆盖
undoManager
并返回一个自己的实例 - 覆盖
canBecomeFirstResponder
并返回true
- 将 VC 设置为第一响应者
viewDidAppear
(我也为此尝试了不同的地方)
我观察到的:
- 三指滑动不会在我的撤消管理器上触发
undo
,而是在窗口的 - 摇动撤消手势确实
undo
在我的 VC 撤消管理器上触发
现在有趣的部分:如果我在视图中添加UITextField
(或UITextView
),告诉它成为第一响应者,然后让我的 VC 再次成为第一响应者,三指手势就可以了!因此,当文本字段成为第一响应者时,它似乎在告诉系统一些事情,告诉三指手势观察者不要使用窗口的撤消管理器。在辞去第一响应者的职务时,责任正确地落在了我的 VC 身上。
有谁知道我在这里缺少什么?
解决方案
推荐阅读
- wordpress - 通过复选框选择多个类别,并显示属于这些类别的文章
- python - def show_batch() 没有显示我的火车图像
- react-native - 当 socket.io 更新新消息时,React Native Gifted Chat 会附加消息两次
- javascript - 在 three.js 中使用模板缓冲区
- vuejs2 - 将 ID 传递给 Quasar 并在默认设置中使用带有子组件的守卫
- javascript - TypeScript - 一遍又一遍地调用 API 端点,直到我们得到想要的结果 - 递归还是循环?
- android - Android EpoxyRecyclerView - 切换方向
- regex - 在 python RE 包中使用正则表达式来操作标签
- javascript - 如何在单元测试期间禁用 Morgan(请求记录器)?
- python - 从命令提示符运行 pySpark 时出现“系统找不到指定的路径”错误