Obj-C 的新手在这里。我有 6 个文本字段,其中包含用户的 PIN 码
如何切换这 6 个 UI textFields 的安全文本输入?有按钮可以显示和取消显示 PIN 码。默认情况下,Storyboard 上会检查安全文本条目。
谷歌搜索一段时间后,我发现了这段代码,旨在找到我的视图中的所有文本字段
- (NSArray*) findAllTextFieldsInView:(UIView*)view {
NSMutableArray* textfieldarray = [[NSMutableArray alloc] init];
for (id x in [view subviews]) {
if ([x isKindOfClass:[UITextField class]])
[textfieldarray addObject:x];
if ([x respondsToSelector:@selector(subviews)]) {
[textfieldarray addObjectsFromArray:[self findAllTextFieldsInView:x]];
}
}
return textfieldarray;
}
这是我的代码
- (IBAction) revealPIN:(id)sender {
if (self.reveal == TRUE) {
self.reveal = FALSE;
}
else {
self.reveal = TRUE;
}
NSArray* allTextFields = [self findAllTextFieldsInView:[self view]];
}
我不知道把textField.secureTextEntry = YES
or放在哪里NO
;
我输入了布尔值,以便我可以检查切换状态。在这之后我必须做什么?或者还有其他更优雅的方法来实现它吗?我对如何做到这一点感到困惑
谢谢!
你应该这样尝试:
- (IBAction) revealPIN:(id)sender {
if (self.reveal == TRUE) {
self.reveal = FALSE;
}
else {
self.reveal = TRUE;
}
NSArray* allTextFields = [self findAllTextFieldsInView:[self view]];
for tf in allTextFields
{
tf.secureTextEntry = self.reveal; // <--- Check this one
}
}
您还可以优化,而不是先找到文本字段然后更新它们的 secureTextEntry 属性,您应该创建一个直接更新文本字段属性的方法,如下所示:
- (void) updateSecureEntryAttrForAllTextFieldsInView:(UIView*)view {
NSMutableArray* textfieldarray = [[NSMutableArray alloc] init];
for (id x in [view subviews]) {
if ([x isKindOfClass:[UITextField class]])
x.secureTextEntry = self.reveal; // <--- Check this one
if ([x respondsToSelector:@selector(subviews)]) {
[textfieldarray addObjectsFromArray:[self updateSecureEntryAttrForAllTextFieldsInView:x]];
}
}
return;
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句