• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ios - 文本字段一个字符并自动更改为下一个文本字段?不起作用?

[复制链接]
菜鸟教程小白 发表于 2022-12-13 15:53:56 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我有一个程序,其中有四个文本字段,每个文本字段只有一个字符的 OTP。当用户在一个文本字段中输入一个字符时,它应该自动移动到下一个文本字段。但由于某种原因,只有我的第一个文本字段能够执行此操作,并且它转到第三个文本字段而不是第二个。并且文本字段的其余部分无法执行从一个文本字段移动到另一个文本字段的自动操作。我使用文本字段委托(delegate)进行编码。下面给出的是我的代码。

- (BOOL)textFieldUITextField *)textField shouldChangeCharactersInRangeNSRange)range replacementStringNSString *)string
{
if (![string isEqualToString""]) {
    textField.text = string;
    if ([textField isEqual:self.firstOTP]) {
        [self.secondOTP becomeFirstResponder];
    }else if ([textField isEqual:self.secondOTP]){
        [self.thirdOTP becomeFirstResponder];
    }else if ([textField isEqual:self.thirdOTP]){
        [self.fourthOTP becomeFirstResponder];
    }else{
        [textField resignFirstResponder];
    }
    return NO;
}
return YES;
}

下面是我的代码,用于识别是否输入了一个字符。

-(BOOL)textFieldShouldBeginEditingUITextField *)textField{
if (textField.text.length > 0) {
    textField.text = @"";
}
return YES;
}

任何人都可以识别错误吗?



Best Answer-推荐答案


首先,确保为所有四个文本字段设置了 delegate。还要确保您的 socket 连接正确。

接下来,将 isEqual: 的用法更改为 ==。您实际上确实想在这里使用 == 因为您想比较指针,而不是查看两个对象在逻辑上是否相等。

如果用户将文本粘贴到文本字段中,您也会遇到问题。用户可以轻松输入多个字符。

- (BOOL)textFieldUITextField *)textField shouldChangeCharactersInRangeNSRange)range replacementStringNSString *)string {
    if (string.length > 0) {
        textField.text = [string substringToIndex:1];
        if (textField == self.firstOTP) {
            [self.secondOTP becomeFirstResponder];
        } else if (textField == self.secondOTP) {
            [self.thirdOTP becomeFirstResponder];
        } else if (textField == self.thirdOTP) {
            [self.fourthOTP becomeFirstResponder];
        } else {
            [textField resignFirstResponder];
        }

        return NO;
    }

    return YES;
}

关于ios - 文本字段一个字符并自动更改为下一个文本字段?不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48200456/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap