我正在从iOS的原生联系人应用中创建类似于“新联系人”的表单。
我找到的唯一方法是创建表视图并创建自定义表视图单元格。
到目前为止一直很好......
现在,我的TextField只有在点击它时才会获得焦点,但是当我点击我创建的Table View Cell类的任何地方时,我想将焦点设置为TextField。
我试过了:
- (void)setSelected:(BOOL)selected animated:(BOOL)animated
{
[super setSelected:selected animated:animated];
[self.txtInputer becomeFirstResponder];
// Configure the view for the selected state
}
但它没有按照我的意愿工作,重点是表格的最后一个字段。
答案 0 :(得分:3)
使用UITextField作为类的.h(我称之为textField)中的属性创建一个自定义单元格。 (我称之为TextFieldCell)
然后在didSelectRowAtIndexPath中有下面的代码。当点击一个单元格时,您将获得对TextFieldCells的引用,然后您可以从中查找textField属性并在其上调用becomeFirstResponder。注意我已经包含了您应该用于此示例的枚举。如果您不知道这些是什么,请将它们放在#includes下面并谷歌进入它们。喜欢这个词汇!!
//table view sections
enum
{
TableViewSectionUsername = 0,
TableViewSectionPassword,
TableViewSectionLogin,
TableViewSectionCount
};
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
TextFieldCell *usernameCell = (TextFieldCell*)[_tableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:TableViewSectionUsername]];
TextFieldCell *passwordCell = (TextFieldCell*)[_tableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:TableViewSectionPassword]];
//switch section
switch(indexPath.section)
{
case TableViewSectionUsername:
{
[[usernameCell textField] becomeFirstResponder];
break;
}
case TableViewSectionPassword:
{
[[passwordCell textField] becomeFirstResponder];
break;
}
case TableViewSectionLogin:
{
if([[[usernameCell textField] text] isEqualToString:@""])
{
NSLog(@"Please enter a username");
[[usernameCell textField] becomeFirstResponder];
return;
}
if([[[passwordCell textField] text] isEqualToString:@""])
{
NSLog(@"Please enter a username");
[[passwordCell textField] becomeFirstResponder];
return;
}
[self dismissViewControllerAnimated:YES completion:nil];
break;
}
default:
{
break;
}
}
//deselect table cell
[_tableView deselectRowAtIndexPath:indexPath animated:YES];
}