【发布时间】:2013-03-13 20:52:35
【问题描述】:
我正在使用带有自动向下滚动的 tableView 的应用程序,因此点击通常会跳到表格顶部的状态栏会导致问题(它开始滚动,但如果自动滚动滴答作响,它停在中间某处)。
我想禁用它,或者至少在它被点击时插入一些代码以暂时暂停计时器,然后在它到达顶部时恢复它。
有什么方法可以实现这两个目标吗?
【问题讨论】:
标签: ios objective-c uitableview uiscrollview scrolltop
我正在使用带有自动向下滚动的 tableView 的应用程序,因此点击通常会跳到表格顶部的状态栏会导致问题(它开始滚动,但如果自动滚动滴答作响,它停在中间某处)。
我想禁用它,或者至少在它被点击时插入一些代码以暂时暂停计时器,然后在它到达顶部时恢复它。
有什么方法可以实现这两个目标吗?
【问题讨论】:
标签: ios objective-c uitableview uiscrollview scrolltop
UIScrollView(和UITableView 作为它的子类)具有scrollsToTop 属性,默认为YES,当点击状态栏时它会滚动到顶部。您只需将其设置为NO。
但是,请记住,iOS 用户可能会期待这种行为,因此从用户体验的角度来看,将其关闭可能不是最好的主意。如果您只需要在特定时间禁用它,您也可以将其保留为 YES 并从 -scrollViewShouldScrollToTop: 委托方法返回 NO。
实际上,通过委托处理它可能非常适合您的情况:
- (BOOL)scrollViewShouldScrollToTop:(UIScrollView *)scrollView
{
// disable timer
return YES;
}
- (void)scrollViewDidScrollToTop:(UIScrollView *)scrollView
{
// re-enable timer
}
【讨论】:
你可以试试:
[myView setScrollsToTop:NO];
【讨论】:
对于 Swift 5
override func scrollViewShouldScrollToTop(_ scrollView: UIScrollView) -> Bool {
return false
}
【讨论】: