gpt4 book ai didi

ios - 检测 iOS 13 撤消和重做

转载 作者:行者123 更新时间:2023-12-02 04:51:20 27 4
gpt4 key购买 nike

我有一个 WKWebView,带有撤消和重做的自定义实现。我希望能够知道何时触发系统撤消/重做(通过手势或点击 iPadOS 中的键盘助手按钮),以便我可以使用我的自定义实现。

有公共(public) API 可以做到这一点吗?

最佳答案

有多种方法。在 iOS native 端,没有可用的公共(public) API 来接管完全控制 AFAIK,但您可以收听像这样的 UNDO 通知来了解它们:

[NSNotificationCenter.defaultCenter addObserverForName:NSUndoManagerWillUndoChangeNotification object:nil queue:NSOperationQueue.mainQueue usingBlock:^(NSNotification * _Nonnull note) {
NSLog(@"Undo Notification: %@", note);
}];

然后您将看到负责此操作的 NSUndoManager 位于 WKContentView 中。要实现这一目标,只有混合才能帮助解决已知的风险......

<小时/>

但是还有另一种方法可以在基于 WebKit 的浏览器 View 中工作(例如 WKWebView ),即监听 beforeinput 事件。例如,对于 contenteditable 元素,您可以添加以下监听器:

editor.addEventListener('beforeinput', event => {
if (event.inputType === 'historyUndo') {
console.log('undo')
event.preventDefault()
}
if (event.inputType === 'historyRedo') {
console.log('redo')
event.preventDefault()
}
console.log('some other inputType', event.inputType)
})

这个想法取自此讨论:https://discuss.prosemirror.net/t/native-undo-history/1823/3?u=holtwick

这是一个要测试的 JSFiddle:https://jsfiddle.net/perenzo/bhztrgw3/4/

另请参阅相应的 TipTap 插件:https://github.com/scrumpy/tiptap/issues/468

关于ios - 检测 iOS 13 撤消和重做,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57811681/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com