原理
底部一个UITextField设置为透明,在上面添加自定义要显示的子视图,通过监听输入改变来现实或隐藏上面添加的控件
核心代码
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
NSLog(@"变化%@", string);
if([string isEqualToString:@"\n"]) {
//按回车关闭键盘
[textField resignFirstResponder];
return NO;
} else if(string.length == 0) {
//判断是不是删除键
return YES;
}
else if(textField.text.length >= self.count) {
//输入的字符个数大于6,则无法继续输入,返回NO表示禁止输入
NSLog(@"输入的字符个数大于%ld,忽略输入",self.count);
return NO;
} else {
return YES;
}
}
/**
* 重置显示的点
*/
//重写这个方法可以实现
- (void)textFieldDidChange:(UITextField *)textField
{
NSLog(@"%@", textField.text);
for (UIView *dotView in self.dotArray) {
dotView.hidden = YES;
}
for (int i = 0; i < textField.text.length; i++) {
((UIView *)[self.dotArray objectAtIndex:i]).hidden = NO;
}
if (textField.text.length == self.count) {
NSLog(@"输入完毕");
}
}