欢迎使用优快云-markdown编辑器

本文介绍了一个关于密码输入界面的小黑点显示错误问题及其解决方案。当用户删除密码字符时,原本应隐藏的小黑点却意外显示。通过调整代码逻辑,确保小黑点的显示与密码长度匹配,最终解决了这一问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天碰到了一个奇怪的问题.我正在写一个密码输入界面,在设置textField上面的黑点时,一开始,我的代码是这样的,
`
//添加小黑点
for (int j = 0; j < 6; j ++) {
UIView *dotView = [[UIView alloc] init];
dotView.tag = j;
dotView.hidden = YES;
dotView.backgroundColor = [UIColor blackColor];
dotView.layer.cornerRadius = 10;
[passwordTextField addSubview:dotView];
[self.dotArr addObject:dotView];
[dotView mas_makeConstraints:^(MASConstraintMaker *make) {
make.centerY.equalTo(passwordTextField.mas_centerY);
make.width.height.mas_equalTo(20);
make.centerX.equalTo(passwordTextField.mas_right).multipliedBy((1 + 2 * j) / 12.0);
}];
}

//监听文本变化
- (void)textFieldDidChange:(UITextField *)textfield {
//只有tag小于密码个数才能显示
for (UIView *dotView in self.dotArr) {
if (dotView.tag <= (_passwordTextField.text.length - 1)) {
dotView.hidden = NO;
} else {
dotView.hidden = YES;
}
}
//如果密码输入达到6位
if (_passwordTextField.text.length == 6) {
//隐藏键盘
[_passwordTextField resignFirstResponder];
[self modifyPayPassword];
}
}

调试过程中,我输入前,一切正常.输入几个数字,然后全部删掉,那么问题就出现了,删掉最后一个数字时,小黑点就全部显示出来了
![这bug出现](https://img-blog.youkuaiyun.com/20170803212728595?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvVGlnZXJNaXJhY2xl/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)![这里写图片描述](https://img-blog.youkuaiyun.com/20170803212313462?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvVGlnZXJNaXJhY2xl/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
百思不得解,突然我灵机一动,发现如果删除最后一个小黑点,那么就会出现
dotView.tag < -1的情况,会不会有关系呢,然后我将代码修改成
//监听文本变化
- (void)textFieldDidChange:(UITextField *)textfield {
//只有tag小于密码个数才能显示
for (UIView *dotView in self.dotArr) {
if (dotView.tag < _passwordTextField.text.length) {
dotView.hidden = NO;
} else {
dotView.hidden = YES;
}
}
//如果密码输入达到6位
if (_passwordTextField.text.length == 6) {
//隐藏键盘
[_passwordTextField resignFirstResponder];
[self modifyPayPassword];
}
}
`这样就正常了,我也不知道内中的解释,现在项目忙,我就先记录一下.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值