我有两个部分UITableView
。第一部分是带步进器的静态行,它创建第二部分的单元格。第二部分的每个单元格都包含带键盘的UITextField
。我可以使用键盘上的UITapGestureRecognizer
或其他DONE按钮来关闭键盘,但它仅适用于最后一个单元格。
我尝试了以下方法:
UITapGestureRecognizer
在ViewDidLoad
中我放了:
UITapGestureRecognizer *gestureRecognizer = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(hideKeyboard)];
[self.tableView addGestureRecognizer:gestureRecognizer];
然后
-(void)hideKeyboard{
[self.tableView resignFirstResponder];
}
或
-(void)hideKeyboard:(UITapGestureRecognizer*)sender{
[self.cellText endEditing:YES];
}
在
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath I added
[cellText addTarget:self action:@selector(myNumberValueBeginEditing:) forControlEvents:UIControlEventEditingDidBegin];
并在
-(void)myNumberValueBeginEditing:(UITextField *)sender
{
int row = [sender.superview.superview tag];
UITextField *cellTemp = (UITextField*)[(UITableViewCell *)sender.superview viewWithTag:200+row];
cellTemp.delegate = self;
[cellTemp becomeFirstResponder];
}
然后我尝试在DONE按钮
中resignFirstResponder-(IBAction)doneButton:(UITextField *)sender {
NSLog(@"doneButton");
int row = [sender.superview.superview tag];
[(UITextField*)[(UITableViewCell *)sender.superview viewWithTag:200+row] resignFirstResponder];
}
我没有更多关于如何从所有UITextFields
重新签名键盘的想法。如果有人有一些补救措施,我将非常感激。
答案 0 :(得分:1)
您与endEditing:
的使用非常接近。不要将endEditing:
发送到文本字段的实例,而是尝试将其发送到主视图。 e.x:
[self.view endEditing:YES];
endEditing:
可以直接发送到文本字段实例,也可以发送到视图,如果是后者,任何正在编辑的文本字段都是您指定的视图的子视图,将重新签名第一个响应者。 / p>
来自文档:
使视图(或其中一个嵌入的文本字段)重新签名 第一响应者状态