使用reloadSections函数时,UItableViewCell失去焦点

时间:2012-02-15 08:29:28

标签: ios uitableview focus

我有一个非常讨厌的问题,其中无法弄清楚(也许我刚刚以错误的方式创建了我的tableview,我不知道)。我有一个UITableview有很多(分组的)自定义单元格,它们都有UItextField(就像你的联系人一样)。当我自动点击电话号码时,它将添加另一个电话号码(也像编辑模式中的联系人簿)。

要实现添加另一个UItableviewCell,我更新数据并使用

重新加载表的特定部分
[MyTable reloadSections:[NSIndexSet indexSetWithIndex:2]withRowAnimation:UITableViewRowAnimationNone];

在那之后我打电话给

[aTextField becomeFirstResponder];

保持键盘的焦点。但是在重新加载之后我在我的文本字段上失去了焦点,因此我无法继续输入我的数字,而无需手动重新聚焦光标。

一个。它真的很烦人手动重新聚焦

湾某些函数被调用(textFieldDidEndEditing)我不想被调用,除非我手动切换到另一个Uitextfield。

希望有人可以帮助我!

我非常感谢你有时间提前阅读。

2 个答案:

答案 0 :(得分:0)

我希望这会对你有所帮助。但是这里的条件是,你应该使用标记文本字段

=============================================== =================================

cell =(UITableViewCell *)[tableView dequeueReusableCellWithIdentifier:identifier];  

        if (nil ==cell) {
            cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:identifier] autorelease];    
            UITextField *txtview = [[UITextField alloc]
                                   initWithFrame:CGRectMake(93.0,36.0,190.0,94.0)];            
            txtview.backgroundColor = [UIColor clearColor];
            txtview.tag = 15;

            txtview.contentInset = UIEdgeInsetsMake(5 ,0 ,0 ,0); 
            txtview.textColor = [UIColor colorWithRed:221.0/255.0 green:249.0/255.0
                                                 blue:250.0/255.0 alpha:1.0];   
            [cell.contentView addSubview:txtShout];
            [txtview release];
        }
        UITextField *txtview = (UITextField*)[cell.contentView viewWithTag:15];
        txtview.text = [NSString stringWithFormat:@"%@",strText];

=============================================== ===========

   [mTableView reloadSections:[NSIndexSet indexSetWithIndex:2]withRowAnimation:UITableViewRowAnimationNone];
    int rows = [mTableView numberOfRowsInSection:2];
    int row = rows-1; //last
    int lastbutonerow = rows-2;
    UITableViewCell *cell = [mTableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:row inSection:2]];

    UITextField *tf = [cell.contentView viewWithTag:15];
    [tf becomeFirstResponder];

答案 1 :(得分:0)

如果您只插入了一行,并且知道它是哪一行,则不应使用reloadData。您应该使用insertRowsAtIndexPaths:withRowAnimation: