gpt4 book ai didi

ios - 关闭 UITableView 单元格中 UITextfield 的键盘

转载 作者:行者123 更新时间:2023-11-29 12:42:42 26 4
gpt4 key购买 nike

我有一个 UITableView,我已经为每个单元格分配了一个 UITextField。我希望能够接受来自每个文本字段的输入,并在用户点击屏幕上除键盘以外的任何地方时关闭键盘。这是我到目前为止的代码,但我发现只有当我在表格中的最后一个单元格上时,键盘才会消失。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = [self.gradesTableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath];

self.tf = [[UITextField alloc] initWithFrame:CGRectMake(225, (cell.contentView.bounds.size.height-30)/2, 50, 30)];

[self.tf setDelegate: self];
self.tf.tag = indexPath.row;

self.tf.textAlignment = NSTextAlignmentCenter;
self.tf.placeholder = @"0";
self.tf.backgroundColor = [UIColor grayColor];
self.tf.borderStyle = UITextBorderStyleRoundedRect;
self.tf.keyboardType = UIKeyboardTypeDecimalPad;

[cell addSubview:self.tf];

cell.textLabel.text = [self.adderArrayLabels objectAtIndex:indexPath.section];
return cell;
}

- (void)textFieldDidBeginEditing:(UITextField *)textField{
self.tapGR = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tap)];
[self.view addGestureRecognizer:self.tapGR];
NSLog(@"Started editing");
}

我尝试了 endEditing:resignFirstResponder,但都只在我在最后一个单元格的文本字段上时关闭键盘。

- (void)tap {
[self.tf endEditing:YES];
//[self.tf resignFirstResponder];

NSLog(@"tap called");
self.tapGR.enabled = NO;
}

通过代码中的 NSLog 语句,我可以确认方法 tap 会在每次识别出适当的点击手势时被调用,但键盘仍然存在。我该如何解决这个问题?

最佳答案

问题出在这里:

self.tf

你的类有一个文本字段属性,每次你创建一个新的文本字段时,你都将它分配给这个属性。然后,您只需尝试对该属性执行 endEditing:resignFirstResponder,这将始终是最近创建的单元格上的文本字段。

您根本不需要此属性,在创建单元格时可以只使用本地文本字段变量。

然后将您的点击方法更改为:

- (void)tap {
[self.view endEditing:YES];

NSLog(@"tap called");
self.tapGR.enabled = NO;
}

确实,该方法可能应该是:- (void)tap:(id)sender;

此外,正如我评论的那样,手势识别器应该添加到 viewDidLoad 中。我们只需要添加一次,而不是每次文本字段开始编辑时。每次文本字段开始编辑时添加它的唯一原因是,如果您每次文本字段结束编辑时也将其删除......但是由于手势调用的方法只是摆脱了键盘,我认为没有理由这样做。

关于ios - 关闭 UITableView 单元格中 UITextfield 的键盘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24462876/

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