1

I have a UITextField that is a password field declared by using

passwordField.secureTextEntry = YES;

My issue is that when I type half my password, click on a different component, and come back to the passwordField and start typing again, iOS clears the existing text.

Is there a way to prevent this from happening or turn it off?

-Henry

4

3 回答 3

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;
}
于 2015-03-19T11:05:22.653 回答
2

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

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

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

于 2013-06-04T19:27:27.620 回答
0

好吧,当我更改键盘类型以使我的密码组合为 4(数字)+1(alpha)以停止清除时,我遇到了同样的情况secureTextEntry

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

return YES;
}

它重新加载UITextField但不重新加载其文本,因此在不清除文本的情况下,它将键盘从字母更改为数字,反之亦然。您可以将其用于您自己的功能。

于 2017-01-27T12:10:22.247 回答