我正在动态创建一个包含UITextField
的表格视图。
l_textField = [[UITextField alloc] initWithFrame:TextFieldFrame];
l_textField.tag = cellRow;
l_textField.delegate = self;
l_textField.font = [UIFont boldSystemFontOfSize:14];
l_textField.textColor = [UIColor blackColor];
[l_textField setEnabled:YES];
[cell.contentView addSubview:l_textField];
现在我想在用户触摸单元格时将焦点设置在此文本字段上。我写这个
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)newIndexPath {
UITextField* field = (UITextField *) [tblView viewWithTag: newIndexPath.row];
[field resignFirstResponder];
}
但这不起作用
答案 0 :(得分:60)
使用[field resignFirstResponder];
[field becomeFirstResponder];
resignFirstResponder
用于从文本字段中删除键盘(焦点)
答案 1 :(得分:1)
我在这里遇到了同样的问题,即使正确使用了[field becomeFirstResponder];
。
我还使用标签来获取单元格内的对象。你的didSelectRowAtIndexPath
应该是这样的,以获得正确的单元格:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
currentRow = indexPath.row;
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
UITextField *indexField = (UITextField *)[cell viewWithTag:101];
[indexField becomeFirstResponder];
}
它对我来说就像一个魅力。
答案 2 :(得分:0)
Swift 3
myTextField.becomeFirstResponder()
我的代码。获取当前单元格的索引路径。并获取下一个indexpath.row的单元格。并呼吁 ** cell1.txtFindings.becomeFirstResponder()**
if let textFieldIndexPath = specsListView.indexPath(for: cell){
let newIndexPath = IndexPath(row: textFieldIndexPath.row + 1, section: 0)
if let cell1: SpecsTableViewCell = specsListView.cellForRow(at: newIndexPath) as? SpecsTableViewCell{
cell1.txtFindings.becomeFirstResponder()
}
}