gpt4 book ai didi

macOS 应用程序 : Don't Let Sync Changes Overwrite User Typing

转载 作者:行者123 更新时间:2023-12-03 16:40:08 26 4
gpt4 key购买 nike

Xcode 10.1、Swift 4.2、Realm 3.12(数据库)

我有一个 Mac 应用程序,多个用户可以在其中进行协作,并且可以在多个设备之间同步数据。所以数据总是在变化。

在整个应用程序中,我编写了在后台发生同步时更新 UI 的代码。我一直遇到的一个问题是,当用户在 NSTextField 中输入时,会发生同步(来自另一个用户的更改),并且他们输入的 NSTextField 会突然发生恢复到新的同步值,用户将丢失他们输入的内容。

这是我制作的一个演示 Mac 应用程序,用于模拟该问题。如果您开始在字段中输入内容,该字段每 10 秒更新一次: https://d.pr/f/8iXjqx

我想知道其他 Mac 开发人员使用什么策略来避免这些冲突。

有没有办法告诉 NSTextField 如果其中存在光标则不更新?我是否必须在每次击键时将值保存到本地数据库,然后在同步发生时以某种方式进行合并?

最佳答案

在您的文本字段中,我会捕获您是否处于事件状态:

override func becomeFirstResponder() -> Bool
{
isFirstResponder = true
return super.becomeFirstResponder()
}

override func resignFirstResponder() -> Bool
{
isFirstResponder = false
return super.resignFirstResponder()
}

然后,当您要更新文本时,如果设置了该标志,则保留它。

假设您不想以某种方式合并文本,如果您辞职时未进行任何编辑,则将文本刷新到模型值,否则将更改写回模型。

关于macOS 应用程序 : Don't Let Sync Changes Overwrite User Typing,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54242500/

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