ios - scrollToRowAtIndexPath 在 iOS 8 上无法正确滚动到底部

标签 ios swift uitableview

这里有一个奇怪的问题。我想将表格 View 滚动到第 1 部分第 0 行的底部。我正在使用此代码:

tableView.scrollToRowAtIndexPath(NSIndexPath(forRow: 0, inSection: 1), atScrollPosition: .Bottom, animated: true)

它似乎在 iOS 9.0 及更高版本的模拟器中完美运行。然而,在我的设备(iOS 8.1)和 8.3 的模拟器上,它的作用完全相反。它滚动到单元格的顶部而不是底部!似乎很奇怪。任何想法我可能在这里做错了什么?非常感谢任何指点!谢谢

最佳答案

根据 this answer对于类似的问题,它似乎是 iOS 8 中的一个错误。解决方法是将滚动延迟一个非常小的量(此代码也可以在链接的答案中找到,但它在 Objective-C 中)。请注意,我没有测试此代码,因为我没有安装 iOS 8 模拟器。

let delayTime = dispatch_time(DISPATCH_TIME_NOW, Int64(0.1 * Double(NSEC_PER_SEC)))
dispatch_after(delayTime, dispatch_get_main_queue()) {
    self.tableView.scrollToRowAtIndexPath(NSIndexPath(forRow: 0, inSection: 1), atScrollPosition: .Bottom, animated: true)
} 

编辑:这是 Swift 3 中的答案:

DispatchQueue.main.asyncAfter(deadline: .now() + 0.1) {
    self.tableView.scrollToRow(at: IndexPath(row: 0, section: 1), at: .bottom, animated: true)
}

关于ios - scrollToRowAtIndexPath 在 iOS 8 上无法正确滚动到底部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38611617/

相关文章:

ios - 在 TableView 之间切换

objective-c - 向 UIScrollView 中的元素添加填充

ios - 枚举内存使用

ios - 如何在 Xcode 的 UITests 下以通用方式访问后退栏按钮项目?

ios - 如何调整图像大小以适应 UITableView 单元格?

ios - 在 Storyboard 中创建标题时,将 UITableView 标题 View 粘贴到顶部

iphone - 在 Objective C 编程中哪个是更可取的几何?

ios - UIImageview 上的 UITapGesture 不工作

iOS SpriteKit 如何使用应用程序包中文件夹中的图像创建节点?

swift - 如何从测量中获取格式化值和单位