关于UITextField的简单问题,而不是使用secureTextEntry

时间:2011-07-13 10:25:50

标签: iphone

我有一个带有文字“密码”的密码字段,当用户点击时,它会被清除。此外,我想将此文本字段的类型设置为安全,但这不起作用。

- (void)textFieldDidBeginEditing:(UITextField *)textField{

  if ([textField.text isEqualToString:@"Password"] || [textField.text isEqualToString:@"Email"])
  {
  textField.text = @"";
      textField.secureTextEntry = YES;
  }
}

6 个答案:

答案 0 :(得分:6)

我刚遇到同样的问题。我正在textFieldDidBeginEditing:电话中更改房产。

将属性更改移至textFieldShouldBeginEditing:调用可解决此问题。我相信诀窍是在文本字段不是becomeFirstResponder时更改它。

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField {
    if ([textField isEqual:_passwordField]) {
        textField.secureTextEntry = YES;
    }

    return YES;
}

答案 1 :(得分:2)

只需将文字放在占位符中,即可确保密码文本字段安全。你的问题将得到解决:)。

答案 2 :(得分:2)

- (void)textFieldDidBeginEditing:(UITextField *)textField{

  if ([textField.text isEqualToString:@"Password"] || [textField.text isEqualToString:@"Email"])
  {
  textField.text = @"";
    [textField resignFirstResponder];
    textField.secureTextEntry = YES;
    [textField becomeFirstResponder];
  }
}

它可以解决您的问题,但它有一个很大的错误。狗屎UITextField。

答案 3 :(得分:1)

在界面构建器中设置属性,或者在初始化文本字段时从

中删除该行
-(void)textFieldDidBeginEditing:(UITextField *)textField {
}

我认为你应该将占位符文本设置为电子邮件或密码,并预先从界面构建器中选择安全文本条目。就是这样......

答案 4 :(得分:1)

我意识到这有点旧,但是在iOS 6中,UITextField“text”现在默认为“Attributed”在Interface Builder中。将此切换为“Plain”,就像在iOS 5中一样,解决了这个问题。

答案 5 :(得分:0)

如果您的键盘存在,secureTextEntry将无效。因为如果键盘显示,UITextInputTraits协议不会更改textfield。 您可以关闭键盘,它可以正常工作

[myTextField resignFirstResponder]