【问题标题】:UITextfield password placeholder dotsUITextfield 密码占位符点
【发布时间】:2014-03-28 02:53:36
【问题描述】:

我是否必须用点设置密码字段的占位符,还是可以将 setSecureTextEntry:YES 应用于占位符文本,而不仅仅是输入的文本?

我正在尝试实现一个设置屏幕,其中包含用户名和密码以及类似于邮件或 iCloud 帐户的帐户设置的其他字段。

设置密码 UITextfield secure 在我键入时用点替换字符时效果很好,但是当我离开设置页面然后导航回它时,密码的占位符值以纯文本形式显示。

这是让点显示为密码占位符文本的唯一方法吗:

NSString *name  =  [settingNames  objectAtIndex:[indexPath row]];
NSString *value =  [settingValues objectAtIndex:[indexPath row]];

if ([name isEqualToString:@"Password"]) 
{
    [settingTextField setPlaceholder:@"••••••••••"];
    [settingTextField setSecureTextEntry:YES];
}
else 
{
    [settingTextField setPlaceholder:value];
}

如果我使用该值而不是点字符串,则该值将显示为纯文本。

这就是我想到使用一串点的地方:How do I display a substitute password character in a UILabel?

此代码正在表格视图中显示。这些值作为 NSUserDefaults 存储和检索。

【问题讨论】:

    标签: ios security passwords uitextfield placeholder


    【解决方案1】:

    在 viewWillAppear 中添加此代码,以便在您返回时再次执行此代码。

    【讨论】:

    • 这段代码在 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 所以把它放在 viewWillAppear 中是不切实际的。表中有许多字段,如果是密码字段,我想隐藏密码值。
    【解决方案2】:
    NSString *dots =@"";
    
        for (int i=0; i<Password.length; i++) {
            dots=[dots stringByAppendingString:@"•"];
    
    
        }
    
        settingTextField.placeholder=dots;
    

    【讨论】:

    • 稍微解释一下就好了!
    • 这个答案没有抓住重点。如果我使用 [settingTextField setSecureTextEntry:YES];然后我输入的所有内容都显示为点。但是如果我将密码的占位符设置为 [settingTextField setPlaceholder:value];它显示密码,即使我设置了 setSecureTextEntry:YES。因此,我没有使用该值,而是用点填充它。有没有不填点的方法?
    • 我认为没有办法做到这一点,因为占位符并不是要显示原始数据,通常是用来提示文本字段的使用情况。
    猜你喜欢
    • 2012-01-21
    • 2013-04-08
    • 1970-01-01
    • 1970-01-01
    • 2011-09-13
    • 2018-08-30
    • 1970-01-01
    • 1970-01-01
    • 2013-09-12
    相关资源
    最近更新 更多