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