首页 > 解决方案 > 防止 MacOS 在 Flutter 中显示重音选择弹出窗口

问题描述

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

为此,我使用 aTextInputClient和 aTextInputConfiguration通过TextInput.attach(client, config).

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

有没有办法阻止 MacOS 这样做?我尝试了所有不同的TextInputConfiguration参数变化,但 MacOS 不在乎。

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

标签: flutterflutter-desktop

解决方案


好的,所以在通过互联网挖掘后,我找到了解决方案。我把它放在这里,以便其他人也可以找到它。

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

最后,它归结为为您的应用程序设置一个偏好,即您不想要点击并按住但自动重复行为。

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

AppDelegate.swift

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

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

就这样。


推荐阅读