gpt4 book ai didi

ios - UITextField shouldChangeCharactersInRange 触发两次?

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:57:45 27 4
gpt4 key购买 nike

我有一个表格 View 。在 cellForRowAtIndexPath 中,我有一个单元格,在该单元格中有 UITextField。我这样设置文本字段的委托(delegate):cell.textField.delegate = self;。我需要在第三个字符上调用我的 API。因此,当用户在文本字段中键入 3 个字符时,将调用 API,因此 shouldChangeCharactersInRange

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
if (textField.text.length >= 2) {
NSString *substring = [NSString stringWithString:textField.text];
substring = [substring
stringByReplacingCharactersInRange:range withString:string];
[API CALLED WITH BLOCK WITH TEXTFIELD TEXT AS PARAMETER:substring];
}
return YES;
}

问题是,当我键入例如“abc”时,shouldChangeCharactersInRange 被第一次调用并且参数是“abc”。第二次之后,再次调用 shouldChangeCharactersInRange 并且我的文本字段有另一个我没有输入的添加字符,它总是被复制的最后一个字符。所以在这个例子中,它发送“abcc”。你知道,问题是什么吗?

最佳答案

在该委托(delegate)方法中设置断点有时会导致该方法被触发两次。尝试删除此处或您的 API 方法中命中的所有断点,然后再次测试。


这很容易复制。创建一个新项目,添加一个 UITextField 导出并将委托(delegate)设置为您的 Controller 。在您的 Controller 中实现 textField:shouldChangeCharactersInRange: 并在 NSLog 语句或其他内容上设置断点,然后 返回 YES。有时,在告诉调试器继续之后,将生成第二个击键并再次击中您的委托(delegate)方法。

关于ios - UITextField shouldChangeCharactersInRange 触发两次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32567720/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com