uitableview - scrollToRowAtIndexPath 在 iOS 7 中停止工作 - ?UITableViewCellScrollView?更改 UITableViewCell 层次结构

标签 uitableview ios7

我升级到 Xcode 5,我的应用程序以 iOS 7 为目标,我的应用程序不再响应 scrollToIndexPath 以将适当的 tableviewcell 滚动到键盘之外

我的设置是我有一个自定义的 tableview 单元格,上面有文本字段,并使用它来生成多个 tableview 单元格来显示和编辑地址的一部分。

点击单元格上的文本框触发

- (void)textFieldDidBeginEditing:(UITextField *)textField

让它滚动到顶部的代码如下所示

UITableViewCell *cell = (UITableViewCell*) textField.superview.superview;
[self scrollToRowAtIndexPath:[self indexPathForCell:cell] atScrollPosition:UITableViewScrollPositionTop animated:YES];

这在 iOS 6 中运行良好,但在 iOS 7 中不起作用。它也不会产生任何错误。

最佳答案

这里的解决方案很简单

看来tableviewCells的层级发生了变化

所以添加一个额外的 .superview

UITableViewCell *cell = (UITableViewCell*) textField.superview.superview;

成为

UITableViewCell *cell = (UITableViewCell*) textField.superview.superview.superview;

它适用于 iOS 7。

textField.superview.superview 曾经是 UITableViewCell 类的对象(或者更具体地说是我的自定义 UITableViewCell)

现在它是 UITableViewCellScrollView 类的一个对象,您需要获取它的 super View 。

UITableViewCellScrollView 是一个私有(private)子类,显然可以使向左滑动以显示删除按钮

After working this out i found this blogpost which illustrates it nicely

希望这能阻止你们中的一些人拔头发:)

西蒙

关于uitableview - scrollToRowAtIndexPath 在 iOS 7 中停止工作 - ?UITableViewCellScrollView?更改 UITableViewCell 层次结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19134423/

相关文章:

arrays - fatal error : Array index out of range when appending array

objective-c - 从自定义单元格返回 NSIndexPath ? (UITableView)

ios - 从文档文件夹中获取 mp3

ios - iPhone如何立即播放多于一个的直播

ios - 如何从 DetailViewController 重新加载 MasterView Controller TableView

ios - 有没有一种方法可以检测tableView类本身内部的UITableView滚动事件?

ios - 确定 TableView 单元格中的图像是否完全可见

ios - 使用自定义 UITableViewCells 并使用带有 Swift 的数组复制它们

ios7 - 后台 iBeacon - 用例

ios - 在iOS 7中点击UITableView时,所有UITableCells都消失