Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/109.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何在UITextField中隐藏密码,如*****&引用;?_Ios_Uitextfield_Swift4 - Fatal编程技术网

Ios 如何在UITextField中隐藏密码,如*****&引用;?

Ios 如何在UITextField中隐藏密码,如*****&引用;?,ios,uitextfield,swift4,Ios,Uitextfield,Swift4,如何在UITextField中隐藏密码,如“****” 为了隐藏密码,我使用了以下代码 txtPassword.isSecureTextEntry = true 但这将显示为“••••••”,但我需要像“*******”获取所需行为的最简单方法是使用某种自定义密码字段,允许此自定义 我不建议这样做。要实现同样的效果,您可以使用普通文本字段,而不使用安全输入选项。当用户输入字符时,将其保存到字符串变量中,并在文本字段中将其替换为希望显示的字符,而不是项目符号 将viewDidLoad()中的t

如何在
UITextField
中隐藏密码,如“****”

为了隐藏密码,我使用了以下代码

txtPassword.isSecureTextEntry = true 

但这将显示为“••••••”,但我需要像“*******”

获取所需行为的最简单方法是使用某种自定义密码字段,允许此自定义


我不建议这样做。

要实现同样的效果,您可以使用普通文本字段,而不使用安全输入选项。当用户输入字符时,将其保存到字符串变量中,并在文本字段中将其替换为希望显示的字符,而不是项目符号

将viewDidLoad()中的textField委托设置为:

然后简单地使用shouldChangeCharactersRange(),如下所示:

这是密码(密码显示为***):


textField中的输出将是***

您可以像这样使用自定义UITextField类:


将objective-c转换为swift:

正确为清晰起见,基本上有三种选择:

  • 使用自定义字体:例如:
  • 使用UITextField的自定义子类:在内部存储实际文本并仅显示“星形”字符
  • 不要这样做:用户希望在整个设备上获得一致的体验,而您可能会失去其他功能(见下文)

  • 现在需要注意的是,安全输入UITextField不仅仅显示“点”字符。如果您在输入字符时观察它的工作方式,它会显示一小段时间,然后被“点”替换,这样用户就有时间查看他们输入的正确字符。如果您快速键入,则在添加下一个字符后,所有字符将立即替换为“点”。如果您使用自己的版本替换“点”字符,则必须复制该功能或将其丢失。

    在iOS中,用户习惯于看到点而不是星星。这是正常的行为。但我需要显示Star,它不是为此而构建的,你必须自己做。你必须意识到,安全文本输入不仅仅是有一个字符来隐藏文本。当您键入时,原始字符会显示一小段时间,然后隐藏,除非您在键入时将其隐藏时快速键入。现在,如果您使用自己的解决方案,您要么会失去它,要么必须自己复制它。你真的需要问问自己,有一个看起来与标准不同的输入字段是值得的。
    textField.delegate = self
    
    func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool
         {
              password = password+string
              textField.text = textField.text!+"*"
              return false
         }