如何解决如何在 MacOS 应用程序中禁用密码自动填充
我的 MacOS 应用程序中有一个 NSSecureTextField 字段。我想禁用密码自动填充按钮(“密码...”按钮)。我看过有关在 iOS 中执行此操作的帖子,但在 Mac OS 上没有看到任何内容。我怎样才能做到这一点?谢谢
解决方法
我同意亚历山大,请不要:)
但如果您必须这样做,它会通过将字段 UITextContentType
Value 属性设置为 .newPassword
或 .oneTimeCode
为 described 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 举报,一经查实,本站将立刻删除。