如何将 UITableViewCell 中的 UITextView 滚动到键盘顶部?

Posted

技术标签:

【中文标题】如何将 UITableViewCell 中的 UITextView 滚动到键盘顶部?【英文标题】:How to scroll UITextView in a UITableViewCell to the top of keyboard? 【发布时间】:2014-06-01 02:25:52 【问题描述】:

我需要创建一个UITableView,其中UITableViewCell 包含一个UITextView,非常类似于联系人应用程序中的Notes 字段。

当文本视图被触摸时,键盘被调出并且光标正确地滚动到键盘顶部。我该怎么做?

当输入更多行时,UITextView 会正确展开,UITableView 会滚动。这是怎么做到的?

我一直在尝试 Stack Overflow 的许多示例和解决方案。大多数人正在处理调整文本视图的高度。我能够让它工作。但是,我无法找到在编辑模式下处理表格视图单元格和文本视图的任何内容。我希望一些有经验的 ios 开发人员能够在这里提供帮助。提前致谢。

【问题讨论】:

我想你需要的是键盘的委托方法。它提供了在弹出键盘时调整布局的功能。 【参考方案1】:

您可以通过在键盘出现时偏移 UITableView 内容来实现这一点。

- (void)keyboardWillShow
    
     CGSize keyboardSize = [[[notification userInfo] objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size;

     UIEdgeInsets contentInsets = UIEdgeInsetsMake(0.0, 0.0, (keyboardSize.height), 0.0);

     self.tableView.contentInset = contentInsets;
     self.tableView.scrollIndicatorInsets = contentInsets;
     [self.tableView scrollToRowAtIndexPath:self.editingIndexPath atScrollPosition:UITableViewScrollPositionTop animated:YES];

并在键盘返回时重置 edgeinset:

- (void)keyboardWillHide:(NSNotification *)notification

   self.tableView.contentInset = UIEdgeInsetsZero;
   self.tableView.scrollIndicatorInsets = UIEdgeInsetsZero;

对于代码和实现我推荐HERE

【讨论】:

我不认为这是键盘位置的问题。更多的是关于如何在文本变化时调整 UITextView 和 UITableViewCell 的大小。

以上是关于如何将 UITableViewCell 中的 UITextView 滚动到键盘顶部?的主要内容,如果未能解决你的问题,请参考以下文章

Xcode UI 测试:UITableViewCell 上的辅助功能查询失败

如何将 UITableViewCell 中的 UITextView 滚动到键盘顶部?

如何将存储在 NSMutableArray.. 中的值打印到 UITableViewcell

将自定义 UITableViewCell 从 nib 加载到 Swift 中的 UIViewController

如何正确地将代码中的字幕 UITableViewCell 出列?

如何将 JSON 数组中的所有记录加载到 UITableViewCell 中?