【问题标题】:Secure UITextField text change to (*) asterisk character将 UITextField 文本安全更改为 (*) 星号字符
【发布时间】:2013-06-09 04:42:58
【问题描述】:

如何将安全的 UITextField 文本(只是一堆点)更改为 (*) 星号字符,如下图所示?

【问题讨论】:

标签: ios objective-c uitextfield


【解决方案1】:

您可以通过编程方式设置它

[textField setSecureTextEntry:YES];

或在 IB 中(底部的安全复选框)

【讨论】:

  • 是的,但文本显示为点..我想要星号
  • @TimTuffley 我太急于回答,以至于我没有正确阅读它。很抱歉。
  • @TimTuffley 这个answer 可能有用。
  • 使用平台标准,即点。为什么要努力定制如此微不足道的东西,以使其与平台上的所有其他应用程序都不匹配?
  • @JonShier 因为可能有一个特别需要星号而不是默认点的组合。否决答案,因为它不能解决 OP 的问题。
【解决方案2】:

您也可以尝试简单地实现自己的“安全文本字段”。

只需创建一个普通的、不安全的文本字段,并将其“编辑更改”操作与视图控制器中的方法链接即可。

然后在该方法中,您可以在每次更改文本时获取新字符,并将它们添加到私有 NSString 属性,然后将 textField 的 .text 属性设置为其中只有星号的字符串(或任何其他字符如果你愿意)。

更新:正如下面 hayesk 所述,此解决方案不再理想,因为第三方键盘的引入会将任何非安全文本字段上的输入暴露给第三方应用程序,冒着收集该信息和/或将其添加到自动更正数据库的风险。

【讨论】:

  • 这些解决方案很糟糕,因为该领域并不真正安全。它允许可以窥探的第三方键盘,它仍然可以将密码添加到自动更正数据库中。
  • 啊,有趣。我在第三方键盘出现之前写了这个答案,所以当时这不是问题,但很高兴知道这现在不再是一个理想的解决方案。谢谢!
  • 您可以将此代码func application(_ application: UIApplication, shouldAllowExtensionPointIdentifier extensionPointIdentifier: UIApplicationExtensionPointIdentifier) -> Bool { if extensionPointIdentifier == .keyboard { return false } return true } 添加到您的AppDelegate 以禁用第三方键盘。
猜你喜欢
  • 2011-03-17
  • 2012-12-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-19
  • 1970-01-01
  • 1970-01-01
  • 2014-06-12
相关资源
最近更新 更多