0

我正在为用户创建一个登录页面,并且我有一个UITextField供用户输入密码的页面。最后我还有一个摘要页面,它会返回用户信息,包括密码。我正在尝试更改密码以显示为“安全”或使用星号而不是文本。例如:

passInput.text = @"password"
changed to: ********;

我正在使用以下代码来完成任务:

NSString *password = passInput.text;
NSRange range = NSMakeRange(0,passInput.text.length);
NSString *formattedPassword = [password stringByReplacingCharactersInRange:range withString:@"*"];
[sumPassword setText:newPassText];

问题是它只返回一颗星,而不是我认为应该返回的 8 颗星。

我错过了什么?

4

2 回答 2

2

你可以设置:

passInput.secureTextEntry = YES;

以便在该字段中书写时显示点而不是字母。

否则你可以让它像:

NSUInteger length = passInput.text.length;
NSMutableString * str = [[NSMutableString alloc] init];

for (NSUInteger i = 0 ; i < length ; ++i) {
    [str appendString:@"*"];
}

或者...

NSUInteger length = passInput.text.length;
// Make this long enough
NSString * str = @"*********************************************************";
NSString * pass = [str substringToIndex:length];
于 2012-02-08T18:54:20.000 回答
1

我假设你需要给它尽可能多的*,因为你在范围内有字符,否则它会取出整个范围,并用给定的字符串替换它。换句话说,您必须将其更改为

NSString *formattedPassword = [password stringByReplacingCharactersInRange:range withString:@"********"];

对于给定的示例password = @"password";

于 2012-02-08T18:48:16.033 回答