我有两个部分的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];
}然后,我尝试在“完成”按钮中使用resignFirstResponder。
-(IBAction)doneButton:(UITextField *)sender {
NSLog(@"doneButton");
int row = [sender.superview.superview tag];
[(UITextField*)[(UITableViewCell *)sender.superview viewWithTag:200+row] resignFirstResponder];
}我没有更多的想法,如何从所有UITextFields的键盘辞职。如果有人有办法的话,我会很感激的。
发布于 2013-02-26 15:42:13
你对endEditing:的使用非常接近。不要将endEditing:发送到文本字段的实例,而是尝试将其发送到主视图。e.x:
[self.view endEditing:YES];endEditing:可以直接发送到文本字段实例,或者发送到视图,在后者的情况下,您指定的视图的子视图编辑的任何文本字段都将退出第一个响应程序。
从医生那里:
导致视图(或其嵌入式文本字段之一)放弃第一个响应状态。
https://stackoverflow.com/questions/15093052
复制相似问题