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 つ星ではなく、1 つ星しか返さないことです。

私は何が欠けていますか?

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 に答える