防止 MacOS 在 Flutter 中显示重音选择弹出窗口

Prevent MacOS from showing the accent selection popup in Flutter

我正在开发 Flutter 桌面应用程序,我必须处理原始键盘输入(处理用户输入的自定义绘制控件)。

为此,我使用了 TextInputClient 和通过 TextInput.attach(client, config) 注册的 TextInputConfiguration

我一切正常,但是当我在 MacOS 上长按一个键然后我收到一个按键,然后 MacOS 显示重音选择弹出窗口。

有什么办法可以防止 MacOS 这样做吗?我尝试了 TextInputConfiguration 参数的所有不同变体,但 MacOS 不在乎。

文本处理的代码太多,无法将其粘贴到此处,但如果需要或不明显,我可以创建一个小示例来说明问题。

好的,在网上搜索后我找到了解决方案。 我把它放在这里,以便其他人也能找到它。

解决方案是一个应用程序范围的设置。我没有找到在 TextInput 实例基础上启用/禁用该行为的解决方案。

最后归结为为您的应用程序设置您不想要点击并按住但自动重复行为的首选项。

您可以在 Flutter 应用程序的 MacOS 集成层中执行此操作:

AppDelegate.swift

将以下方法添加到已经存在的 AppDelegate 中:

override func applicationDidFinishLaunching(_ notification: Notification) {
    UserDefaults.standard.set(false, forKey: "ApplePressAndHoldEnabled");
}

仅此而已。