我正在为用户创建一个登录页面,我有一个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星,正如我认为的那样。
我错过了什么?
答案 0 :(得分: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];
答案 1 :(得分:1)
我假设您需要给出与该范围内的字符一样多的*,否则它将取出整个范围,并将其替换为给定的字符串。换句话说,您必须将其更改为
NSString *formattedPassword = [password stringByReplacingCharactersInRange:range withString:@"********"];
对于password = @"password";