我知道可以使用以下命令使 UITextfield 在密码模式下运行:
textfield.secureTextEntry = YES;
这会将用户输入的所有字符更改为“*”。然而,最后输入的字符会闪烁大约半秒。我知道这是标准行为。
有什么方法可以阻止这种情况并使输入的字符完全模糊吗?
为了实现这一点,我正在考虑子类化UITextField
然后覆盖drawTextInRect:rect
但我欢迎任何其他建议。
你可以这样做:
- 将 UITextField 设置为常规的,而不是秘密的。
- 聆听活动现场
UITextFieldTextDidChangeNotification
- 当发生这种情况时,将文本字段的字符替换为“*”并将真实密码存储在属性中。
这段代码可以工作,虽然有点丑陋,但可能可以优化。
- (void)viewDidLoad
{
[super viewDidLoad];
[[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(keyPressed:) name: UITextFieldTextDidChangeNotification object: nil];
}
- (void) keyPressed: (NSNotification *) notification {
if(!self.password)
self.password = @"";
NSString* fieldText = [notification.object valueForKey:@"text"];
NSString* lastChar = [fieldText substringFromIndex:fieldText.length-1];
if(self.password.length>fieldText.length)
self.password = [self.password substringToIndex:self.password.length-1];
else
self.password = [NSString stringWithFormat:@"%@%@", self.password, lastChar];
NSString* secret = @"";
for (int l = 0; l<self.password.length; l++) {
secret = [secret stringByAppendingString:@"*"];
}
self.textField.text = secret;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)