【发布时间】:2021-02-13 02:55:55
【问题描述】:
诚然,这是一个宽泛的问题,但在使用 SwiftUI TextEditor 控件时是否可以撤消或重做文本输入(通过 iOS 的 UndoManager?)?我到处找,找不到任何资源专注于这个工作流程组合(SwiftUI + TextEditor + UndoManager)。我想知道 TextEditor 的相对不成熟,要么这根本不可能,要么需要一些管道工作来促进。任何指导将不胜感激!
【问题讨论】:
-
目前(SwiftUI 2.0)无法直接执行,因为通过 SwiftUI 环境在上下文中可用的 UndoManager 不是 TextEditor 的 UITextView 后端使用的 UndoManager。因此,如果您需要撤消/重做 - 使用自己的 UITextView 可表示,那么您将可以访问其 undoManager 属性。
-
感谢 Asperi。我有预感会是这样。所以,感谢appcoda.com/swiftui-textview-uiviewrepresentable,我设法做到了这一点——TextView 总体上显示/表现良好。但是考虑到我的布局是在 SwiftUI 中,我如何真正访问它的 undoManager?例如,将有一个用于撤消和重做的按钮,调用时需要能够引用它。此外,是否每个按键都需要注册撤消才能撤消?还是会自动处理?
标签: swift swiftui text-editor undo-redo nsundomanager