分组 UITableViewCell 中的 UITextfield

Posted

技术标签:

【中文标题】分组 UITableViewCell 中的 UITextfield【英文标题】:UITextfield in a Grouped UITableViewCell 【发布时间】:2012-11-19 12:28:16 【问题描述】:

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

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

我的问题是 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 部分,名称文本字段将成为第一响应者。如果我然后点击第 1 部分,电子邮件文本字段将成为第一响应者。如果我然后点击第 0 部分,即使在名称文本字段上调用 ​​becomeFirstResponder,它也不会响应。

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

请指教

【问题讨论】:

在方法顶部尝试 NSLogging self.contactNameTextField 看看它是否正在保存引用。 刚刚找到它,将 self.contactNameTextField 的问题剪切并粘贴两次,谢谢小伙子们 【参考方案1】:

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

[self.contactNameTextField becomeFirstResponder];

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

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

【讨论】:

【参考方案2】:

问题已解决,self.contactNameTextField 出现两次愚蠢的剪切和粘贴错误。

【讨论】:

以上是关于分组 UITableViewCell 中的 UITextfield的主要内容,如果未能解决你的问题,请参考以下文章

仅为 UITableViewCell 的一部分调用 didSelectRowAtIndexPath

如何强制释放 UITableViewCell

保存 UITableviewcell accessoryView 的状态

dequeueReusableCellWithIdentifier、自定义 UITableViewCell 的问题

如何减少/删除分组 UITableView 中的左/右手边距?

从 uitableviewcell 获取文本输入