gpt4 book ai didi

iphone - 以正确的方式检测 UITextField 中的退格键

转载 作者:可可西里 更新时间:2023-11-01 03:52:28 25 4
gpt4 key购买 nike

注意!此问题不是 this 的重复问题或 this问题!这是一个让事情更清楚的新问题。

所以我已经按照上面帖子的所有说明进行操作,并且我有这个 UITextField ,它会在每次用户点击返回按钮时变为空并移动到一个新位置。此外,我跟踪 textView 的输入,并在 TextView 所在的位置创建该文本的标签,如下所示:

- (BOOL)textFieldShouldReturn:(UITextField *)textField {

if (textField.text.length > 5) {
CGRect labelFrame = CGRectMake(textField.frame.origin.x, textField.frame.origin.y, 0, 0);
UILabel *label = [[UILabel alloc] initWithFrame: labelFrame];
label.font = [UIFont fontWithName:@"HelveticaNeue" size:14];
[label setText:textField.text];
[label setTextColor: [BSFunctions getColorFromHex:@"3f3f3f"]];
label.backgroundColor =[UIColor lightGrayColor];
[label sizeToFit];
[labelsArray addObject:label];
[self.view addSubview: label];

CGRect newTextFieldFrame = CGRectMake(labelFrame.origin.x + label.frame.size.width + 5, labelFrame.origin.y, 320, 30);
NSLog(@"Rect is %@", NSStringFromCGRect(newTextFieldFrame));
textField.frame = newTextFieldFrame;
textField.text = @"\u200B";
}
return YES;
}

我将 UITextField 文本中的文本设置为 @"\u200B" 然后我想像这样检测其上的退格按钮:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{

if ([string isEqualToString:@""]) {
NSLog(@"backspace button pressed");

if (labelsArray.count > 0) {
UILabel *labelToDelete = [labelsArray lastObject];
CGRect labelPosition = labelToDelete.frame;
CGRect oldPosition = textField.frame;
textField.frame = CGRectMake(labelPosition.origin.x, labelPosition.origin.y, oldPosition.size.width, oldPosition.size.height);
[labelToDelete removeFromSuperview];
[labelsArray removeLastObject];
textField.text = @"\u200B";
}
}

return YES;
}

但问题是,它只工作一次,然后,即使在 textField 的开头添加了特殊字符,它也不起作用。可能有什么问题?

最佳答案

设置后

textField.text = @"\u200B";

在 textField:shouldChangeCharactersInRange:replacementString:

你必须添加

return NO;

否则它将继续返回 YES 并用 @""替换它,然后当再次按下退格键时什么都不会改变并且不会调用委托(delegate)方法。

我可能误解了您的目标,但我希望这对您有所帮助。

关于iphone - 以正确的方式检测 UITextField 中的退格键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14772177/

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