我正在尝试切换密码文本字段,但我面临文本字段右侧的空白问题。
//眼睛按钮动作。
@IBAction func btnEyePassword(sender: AnyObject)
{
//If password text is secure.
if (self.passrordText.secureTextEntry == true)
{
self.passrordText.secureTextEntry = false
}
else
{
self.passrordText.secureTextEntry = true
}
}
答案 0 :(得分:4)
Swift 4 解决方案
func togglePasswordVisibility() {
password.isSecureTextEntry = !password.isSecureTextEntry
if let textRange = password.textRange(from: password.beginningOfDocument, to: password.endOfDocument) {
password.replace(textRange, withText: password.text!)
}
}
对于简单切换isSecureTextEntry属性,您不需要额外的if语句,但是您应该以这种方式替换文本以强制UITextField重新计算文本宽度以避免额外的空间。
<强>更新强>
Swift 4.2
而不是
password.isSecureTextEntry = !password.isSecureTextEntry
你可以这样做
password.isSecureTextEntry.toggle()
答案 1 :(得分:0)
别担心,在你打印textField.text的两种情况下,你的数据都是一样的,不会有空格。
选中print(self.passrordText.text)
声明var str : String = ""
@IBAction func btnEyePassword(sender: AnyObject)
{
//If password text is secure.
if (self.passrordText.secureTextEntry == true)
{
self.passrordText.secureTextEntry = false
self.passrordText.text = ""
self.passrordText.text = str
print(self.passrordText.text)
}
else
{
self.passrordText.secureTextEntry = true
str = self.passrordText.text!
print(self.passrordText.text)
}
}
这是因为空间消耗,“W”保留了很多空间,而“i”保持较小的空间。