1

我需要一个安全的 UITextField,但默认情况下它会显示最后一个字符约 1 秒,然后才变为 *. 有什么方法可以禁用它,并在输入后立即看到 * 而不是字符?

4

2 回答 2

1

是的,你可以这样做。为此,您需要在 Text 字段中添加空格并开始编辑。并且当用户结束编辑时删除该空白。

有关更多详细信息,请参见下面的代码片段。

- (void)textFieldDidBeginEditing:(UITextField *)textField {
    textField.text = @" ";
    UITextPosition *beginning = [textField beginningOfDocument];
    [textField setSelectedTextRange:[textField textRangeFromPosition:beginning toPosition:beginning]];
}

- (void)textFieldDidEndEditing:(UITextField *)textField {
    if ([textField.text length] > 0)
        textField.text = [textField.text substringToIndex:[textField.text length] - 1];;
}

如果您对此有疑问,请告诉我。

谢谢。

于 2013-11-12T11:20:26.347 回答
1

我使用解决方法解决了它,找不到像设置标志这样的简单解决方案:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
    if (textField == self.mySecureTextField) {
        NSString *currentText = textField.text;
        NSString *newText = [currentText stringByReplacingCharactersInRange:range withString:string];
        textField.text = newText;
        return NO;
    }
    return YES;
}
于 2013-11-13T07:27:47.537 回答