2012-02-08 23 views
0

我爲用戶創建了一個登錄頁面,並且我有一個UITextField供用戶輸入密碼。我最後還有一個摘要頁面,它給出了用戶信息,包括密碼。我正在嘗試將密碼更改爲「安全」或使用星號而不是文本顯示。例如:iOS - 用另一種形式的文本替換文本

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

給出的例子中你可以只設置:

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]; 
+0

這就是我所需要的。謝謝一堆! – Romes 2012-02-08 19:32:58

1

我認爲你需要給它多少個*,因爲你有範圍內的字符,否則它會取出整個範圍,並用給定的字符串替換它。換句話說,你必須將其更改爲

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

password = @"password";

+0

你是完全正確的,但是,什麼是用戶輸入例如不同長度的密碼cat123。我想用輸入的用戶星號代替文本。所以,cat123會是6星,密碼是8星。合理? – Romes 2012-02-08 18:53:26

+0

是的,我明白這個問題,不知道你是否可以使用這種字符串方法使用通用溶劑修復它 – 2012-02-08 19:15:54

相關問題