微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在 MacOS 应用程序中禁用密码自动填充

如何解决如何在 MacOS 应用程序中禁用密码自动填充

我的 MacOS 应用程序中有一个 NSSecureTextField 字段。我想禁用密码自动填充按钮(“密码...”按钮)。我看过有关在 iOS 中执行此操作的帖子,但在 Mac OS 上没有看到任何内容。我怎样才能做到这一点?谢谢

解决方法

我同意亚历山大,请不要:)

但如果您必须这样做,它会通过将字段 UITextContentType Value 属性设置为 .newPassword.oneTimeCodedescribed here 来停止提供自动填充。

,

是的,Michael Rourke 是对的 - 在可可应用中使用自动填充会导致许多问题。例如,如果我开发一个带有本地注册屏幕的应用程序,用户将看到自动填充提供程序,该提供程序建议现有密码而不是提供新密码。这只是隐藏提供者的一种方法 - oneTimeCode。但是用户可能会得到一个空的透明弹出窗口(我真的认为我们可以找到解决方法来隐藏它,例如使用 window.makeFirstResponder(textField)),这不是最大的问题。

对我来说,最大的问题是无法将新凭据保存到 icloud 钥匙串并将其与您的网络域链接(但我可能错了:))。奇怪的是,在应用程序中创建了密码,而登录时没有后续使用的可能性。

我认为这是苹果没有为 Big Sure 添加新密码的一个原因——可能是他们在使用可可自动填充为钥匙串创建新记录时遇到了一些奇怪的问题。

在 Zeplin 应用程序中,人们使用本地登录和网站注册等解决方法 - 因此 safari 在钥匙串中创建记录,应用程序使用自动填充登录。

我很确定他们会在下一版本的 mac os 中添加新密码,但如果他们完全完成此功能然后发布它会更好。他们只是扼杀了在下一个版本的 Mac OS 中正常使用它的能力,因为以前的版本(如当前的 Big Sur)对它的支持很差。

附注 如果用户拥有大量当前域的密码,并且他快速驱动输入密码,那么极有可能导致提供商紧急断开连接(弹出)。

,

由于当前默认行为是在窗口的第一个 NSSecureTextField 上显示自动填充按钮,因此可以禁用密码自动填充。但它是一团糟。

我发现,如果您在关注的字段上方创建一个虚拟 NSSecureTextField,并将其隐藏在另一个预先存在的字段后面,则可以避免出现自动填充按钮。我用 NSTextContentTypeOneTimeCode 设置了这个虚拟字段。

请注意,这仅在虚拟 NSSecureTextField 位于关键视图循环中时才有效,因此隐藏它或设置 refusesFirstResponder 无济于事。这也意味着您需要处理最终用户在字段之间切换的情况,以跳过虚拟字段。

可以通过检测前一个字段(controlTextDidEndEditing:)的编辑完成并当且仅当焦点在虚拟字段上时改变焦点来实现跳过焦点。

对于可以通过适当的 NSTextContentType 简单解决的事情来说,这一切都有些复杂!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?