在secureTextEntry切换之后,UITextField跟踪空白

时间:2016-07-22 11:00:54

标签: ios swift uitextfield

我正在尝试切换密码文本字段,但我面临文本字段右侧的空白问题。

//眼睛按钮动作。

@IBAction func btnEyePassword(sender: AnyObject)
{
    //If password text is secure.
    if (self.passrordText.secureTextEntry == true)
    {           
        self.passrordText.secureTextEntry = false         
    }

    else
    {
       self.passrordText.secureTextEntry = true          
    }
}

2 个答案:

答案 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”保持较小的空间。