如何在键盘上滚动自定义UITextField单元格

时间:2013-12-08 10:26:17

标签: ios uitableview uikit uitextfield

我有一个使用自定义UITableViewCell的UITableView。我的UITableVewCell里面有两个文本域,我在我的主ViewController中添加了一个标签,它包含了我自定义UITableViewCell的UITableView。

所以这是我tableView:cellForRowAIndexPath:

中的代码
static NSString *CellIdentifier = @"Cell";
    cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[CustomFCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
    }

NSString *widthString = [currentFDictionary objectForKey:@"MM"];
        if ((NSNull *) widthString != [NSNull null]) {
            cell.widthTexField.text = widthString;
            cell.widthTexField.tag = indexPath.row;
        } else {
            cell.widthTexField.text = @" ";
        }

NSString *heightString = [currentFDictionary objectForKey:@"NM"];
        if ((NSNull *) heightString != [NSNull null]) {
            cell.heightTextField.text = heightString;
            cell.heightTextField.tag = indexPath.row;
        } else {
            cell.heightTextField.text = @" ";
        }


        return cell;

我想知道如何使用此.tag在UIKeyboard上方滚动UITableViewCell,现在将在视图中显示。

任何帮助都会非常感激。

1 个答案:

答案 0 :(得分:1)

我能想到的一个简单方法是使用-scrollToRowAtIndexPath:atScrollPosition:animated:

UITextField个对象上设置委托。

cell.widthTexField.delegate = self;
//...
cell.heightTextField.delegate = self;

现在,以这种方式使用-textFieldShouldBeginEditing:委托方法:

-(BOOL)textFieldShouldBeginEditing:(UITextField *)textField
{
    NSIndexPath *currentSelectedIndexPath = [self.tableView indexPathForSelectedRow];

    [self.tableView scrollToRowAtIndexPath:currentSelectedIndexPath
                     atScrollPosition:UITableViewScrollPositionTop
                             animated:YES];
}
//NOTE: this way we don't really need to work with the textField tag per se
//(unless you are using it elsewhere as well)
//Instead, we work with the entire cell and scroll it to the desired position

这可能不完美,因为我没有在这里测试过,但这是一般的想法