objective-c - UITableView scrollToRowAtIndexPath 不适用于最后 4

标签 objective-c ios cocoa-touch uitableview scrollto

我在 UITableViewController 中,单元格内有文本字段。当用户单击文本字段时,我实现 UITextFieldDelegate 并在方法 textFieldDidBeganEditing 中确定单元格的索引并滚动到该位置。它适用于除最后 4-5 个细胞之外的所有细胞。我究竟做错了什么?谢谢。

最佳答案

scrollToRowAtIndexPath: 方法将单元格滚动到 UITableViewScrollPositionTopUITableViewScrollPositionMiddle 仅当 tableView 的 contentSize 足够大时把细胞带到那些位置。如果您尝试滚动到顶部或中间的单元格是最后一个单元格或在最后几个单元格中,则无法滚动到中间或顶部。在这些情况下,您需要为这些单元格手动计算 contentOffset

编辑 - 计算 contentOffset:

为了计算contentOffset,请使用@Schoob 指定的方法。将以下代码放入您的 textFieldDidBeginEditing 方法中。

CGPoint origin = textField.frame.origin;
CGPoint point = [textField.superview convertPoint:origin toView:self.tableView];
float navBarHeight = self.navigationController.navigationBar.frame.size.height;
CGPoint offset = tableView.contentOffset;   
// Adjust the below value as you need
offset.y += (point.y - navBarHeight);
[tableView setContentOffset:o animated:YES];

关于objective-c - UITableView scrollToRowAtIndexPath 不适用于最后 4,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6354172/

相关文章:

ios - 如何解除分配从 Swift 结构引用的 UnsafeMutablePointer

ios - UITableView失去当前选择,而手指临时触摸另一行,仅在iPad上

objective-c - NSTask 和 NSPipe 示例与命令行 objective-c 通信

ios - 如何打开常规设置页面(主页,不是应用程序设置)?

ios - 如何在 iOS9.2 上修复 Xcode 错误 “Could not find Developer Disk Image”

ios - 在 Swift 中解包 Dictionary of Dictionaries 时遇到麻烦

objective-c - NSJSONSerialization 不创建可变容器

objective-c - UIBarButtonItem 图像(或 UIToolbar 自定义背景图像?..)比原始图像更暗(或更亮?..)

iphone - 使用 iPhone SDK 查找 SRV 记录

iphone - 警告 : Attempting to create USE_BLOCK_IN_FRAME variable with block that isn't in the frame