密码字段的填充设置

时间:2016-12-21 00:22:29

标签: ios swift swift3

我正在使用Swift 3.我有两个txtFields,其中一个用于电子邮件,另一个用于密码。我使用以下代码为电子邮件字段添加填充:

txtEmail.leftView = paddingView;
txtEmail.leftViewMode = .always

但是,当我将相同的应用程序应用于密码字段时,应用程序似乎会遇到无限循环:

txtPassword.leftView = paddingView;
txtPassword.leftViewMode = .always

我错过了什么?

2 个答案:

答案 0 :(得分:0)

当您的代码显示时,您同时为两个文本字段使用相同的视图对象,这可能就是您的应用程序循环的原因。您不能同时为两个不同的文本字段添加相同的视图对象作为子视图。所以创建新的视图实例并将其设置为单个textfiled的填充。

  let paddingForEmail = UIView(frame: CGRectMake(0, 0, 15,txtEmail.frame.size.height))
    //Adding the padding to the Email textField
    txtEmail.leftView = paddingForFirst
    txtEmail.leftViewMode = UITextFieldViewMode .Always

    //Create new padding object of view for second textField
    let paddingForPassword = UIView(frame: CGRectMake(0, 0, 15,txtPassword.frame.size.height))

    //Add padding to the Password textField
    txtPassword.leftView = paddingForPassword
    txtPassword.leftViewMode = UITextFieldViewMode .Always

希望这会对你有所帮助。

答案 1 :(得分:0)

这个UITextField扩展将在以后简化您的实现,并且应该解决与在多个文本字段上使用相同的UIView相关的任何问题:

extension UITextField {
    func pad(_ amount: Int) {
        self.leftView = UIView(frame: CGRect(x: 0, y: 0, width: amount, height: self.frame.height))
        self.leftViewMode = UITextFieldViewMode.always
    }
}

然后您可以在viewDidLoad中或在视图控制器的调用层次结构中的任何位置使用它。

txtEmail.pad(15)
txtPassword.pad(15)