我有一个UITextField,它是使用
声明的密码字段 passwordField.secureTextEntry = YES;
我的问题是,当我输入一半密码时,点击其他组件,然后返回密码字段并再次开始输入,iOS将清除现有文本。
有没有办法防止这种情况发生或将其关闭?
-Henry
答案 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更改为数字,反之亦然。您可以将它用于自己的功能。