jos*_*lly 17 objective-c uitextfield
我知道可以使用以下方法使UITextfield在密码模式下运行:
textfield.secureTextEntry = YES;
Run Code Online (Sandbox Code Playgroud)
这会将用户输入的所有字符更改为"*".但是,输入的最后一个字符闪烁了大约半秒钟.我知道这是标准行为.
有没有办法阻止这种情况并保持字符输入完全模糊?
为了实现这一点,我想到了子类化UITextField然后重写drawTextInRect:rect
但我欢迎任何其他建议.
你可以这样做:
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;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10144 次 |
| 最近记录: |