iOS - 用其他形式的文本替换文本

时间:2012-02-08 18:40:52

标签: ios uitextfield nsrange

我正在为用户创建一个登录页面,我有一个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星,正如我认为的那样。

我错过了什么?

2 个答案:

答案 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";

的给定示例