从清除现有文本中停止UITextField安全文本

时间:2013-06-04 19:21:16

标签: ios passwords uitextfield

我有一个UITextField,它是使用

声明的密码字段

passwordField.secureTextEntry = YES;

我的问题是,当我输入一半密码时,点击其他组件,然后返回密码字段并再次开始输入,iOS将清除现有文本。

有没有办法防止这种情况发生或将其关闭?

-Henry

3 个答案:

答案 0 :(得分:4)

最简单的方法是使用类似于此的代码为UITextField实现委托:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)replacementString {
  if (textField.text) {
      textField.text = [textField.text stringByReplacingCharactersInRange:range withString:replacementString];
  } else {
      textField.text = replacementString;
  }

  return NO;
}

答案 1 :(得分:3)

默认情况下,不,您不能为安全文本字段执行此操作。你可以解决它。

实现委托方法textField:shouldChangeCharactersInRange:replacementString:并使用传递的值来决定要做什么。

即。如果范围是整个字符串并且替换是空字符串,则不允许更改。新文本可能作为新键入的字符提供,您需要检查方法实际接收的参数。

答案 2 :(得分:0)

当我更改键盘类型以使我的密码组合为4(数字)+1(alpha)时,我有相同的情况,以便停止清除secureTextEntry

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
textField.keyboardType = UIKeyboardTypePhonePad;
[textField reloadInputViews];

return YES;
}

重新加载UITextField但不重新加载文本,因此如果不清除文本,它会将键盘从alpha更改为数字,反之亦然。您可以将它用于自己的功能。