UITextfield在一个分组的UITableViewCell中

时间:2012-11-19 12:28:17

标签: ios xcode uitableview uitextfield

我正在尝试使用分组的静态表格视图在iPhone应用程序上实现输入表单。

我正在使用didSelectRowAtIndexPath懒洋洋地创建文本字段并添加到相关的单元格中。

Screenshot

我的问题是becomeFirstResponder表现不如我所期望的那样。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
if(indexPath.section == 0)
{
    if(!self.contactNameTextField)
    {
        self.contactNameTextField = [[UITextField alloc] initWithFrame:CGRectMake(93, 14, 200, 20)];
        self.contactNameTextField.backgroundColor = [UIColor clearColor];
        self.contactNameTextField.font = [UIFont boldSystemFontOfSize:15];
        self.contactNameTextField.keyboardType = UIKeyboardTypeEmailAddress;
        [self.contactNameCell addSubview:self.contactNameTextField];
    }

    [self.contactNameTextField becomeFirstResponder];

}

if(indexPath.section == 1)
{
    if(!self.contactEmailTextField)
    {
        self.contactEmailTextField = [[UITextField alloc] initWithFrame:CGRectMake(93, 14, 200, 20)];
        self.contactEmailTextField.backgroundColor = [UIColor clearColor];
        self.contactEmailTextField.font = [UIFont boldSystemFontOfSize:15];
        self.contactEmailTextField.keyboardType = UIKeyboardTypeEmailAddress;
        [self.contactEmailCell addSubview:self.contactNameTextField];
    }

    [self.contactEmailTextField becomeFirstResponder];

}

代码按预期逐步完成。

如果我先点击0部分,名称textfield将成为第一响应者。如果我然后点击第1部分,电子邮件文本字段将成为第一响应者。如果我然后点击第0部分,即使在名称文本字段上调用becomeFirstResponder,它也不响应。

另外,如果我先点击第1部分,即使在电子邮件文本字段中调用becomeFirstResponder,它也不会响应。

请告知

2 个答案:

答案 0 :(得分:0)

在调用其中的becomeFirstResponder之前,尝试调用其他文本字段的resignFirstResponder。 替换

[self.contactNameTextField becomeFirstResponder];

[self.contactEmailTextField resignFirstResponder];
[self.contactNameTextField becomeFirstResponder];

对第1部分执行相同操作。在调用resignFirstResponder之前,请检查textField是否为nil。

答案 1 :(得分:0)

问题解决,自我剪切和粘贴错误与self.contactNameTextField两次。