在 iOS7 中滚动 UITableView
Posted
技术标签:
【中文标题】在 iOS7 中滚动 UITableView【英文标题】:Scroll UITableView in iOS7 【发布时间】:2013-09-19 16:02:13 【问题描述】:有人知道如何在 ios7 上滚动 UITableView 吗?
我曾经使用过这段代码,它工作得很好,但现在似乎 contentSize 发生了一些变化(我在 textView 上遇到了这样的问题)
[self.tableView scrollRectToVisible:CGRectMake(0, 0, self.tableView.contentSize.width, self.tableView.contentSize.height) animated:YES]
编辑:
我的代码是这样的
viewDidLoad:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil];
keyboardWillShow:
[self.tableView scrollRectToVisible:CGRectMake(0.0, self.tableView.contentSize.height - 1.0, 1.0, 1.0) animated:NO];
错误:
键盘出现时我没有注意到滚动,因为我没有更新 contentSize。
解决方案(基于丹尼尔的回答)
CGSize size = self.tableView.contentSize;
size.height += keyboardBounds.size.height;
self.tableView.contentSize = size;
[self.tableView scrollRectToVisible:CGRectMake(0.0, self.tableView.contentSize.height - 1.0, 1.0, 1.0) animated:NO];
【问题讨论】:
运行该代码时发生了什么/没有发生什么? 好的,但什么也不定义。当你在桌子的顶部时,你会运行它吗?还是滚动浏览?内容大小是多少?显然,正在发生的事情与您期望发生的事情之间存在差异。但是说“它没有做我想要的”是没有帮助的。 【参考方案1】:理论上你的代码不应该做任何事情。您正在滚动到一个矩形,它是 tableview 内容的大小!
因为您使用的矩形已经可见,因为它基本上是整个表格视图。
如果你想滚动到底部,你应该这样做:
[self.tableView scrollRectToVisible:CGRectMake(0.0,
self.tableView.contentSize.height - 1.0,
1.0,
1.0)
animated:YES];
【讨论】:
滚动到底部是你想要做的吗?请确保您在 viewDidLoad 之后调用它,并且一切都按您的预期设置。也许你打电话太早了。【参考方案2】:TableView 有不同的滚动方式
[self.tableView scrollToRowAtIndexPath:desireRowIndexPath atScrollPosition:UITableViewScrollPositionTop animated:YES];
要查看更多详细信息,请查看this
【讨论】:
以上是关于在 iOS7 中滚动 UITableView的主要内容,如果未能解决你的问题,请参考以下文章