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

Posted

技术标签:

【中文标题】如何在键盘上方滚动自定义 UITextField 单元格【英文标题】:How to scroll cutsom UITextFieldCell above UIKeyboard 【发布时间】:2013-12-08 10:26:16 【问题描述】:

我有一个使用自定义 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,现在将显示在视图中。

任何帮助将不胜感激。

【问题讨论】:

如果您使用的是自定义单元格 xib,那么 cell = [[CustomFCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; 似乎不起作用......它对您有用吗? (但这不是主要问题,只是观察 【参考方案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

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

【讨论】:

以上是关于如何在键盘上方滚动自定义 UITextField 单元格的主要内容,如果未能解决你的问题,请参考以下文章

是否有任何通用解决方案可以在屏幕上的键盘上方滚动 UITextView 和 UITextField

在 UITextField 和软件键盘 ios 之间提供最小填充

在键盘上方添加 UITextField

ios) 如何在自定义键盘上方创建建议视图

当点击 UITextField 时,加载 nib 文件以充当自定义键盘

滚动到包含某个 UITextField 的 UITableViewCell