我想在iOS应用程序的某些视图中添加更新手势 通常这个手势在顶部滚动并保持一段时间
如果用户确实持有滚动视图的时间超过1秒,我可以使用手势处理程序:
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView {
if (scrollView == _tableView) {
_scrollViewDragStarted = [NSDate date];
}
}
- (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset {
if (scrollView == _tableView) {
if (velocity.y < 0 && targetContentOffset->y < 0) {
NSTimeInterval hold = [[NSDate date] timeIntervalSinceDate:_scrollViewDragStarted];
if (hold > 1) {
// refreshing method calls here
}
}
_scrollViewDragStarted = nil;
}
}
它完美无缺,但当用户在顶部
上滚动视图时需要提示保持如何检测此类滚动?
scrollViewWillBeginDragging:
事件没有scrollViewWillEndDragging:withVelocity:targetContentOffset:
或者可能存在另一种实现方式?
答案 0 :(得分:2)
尝试使用scrollViewDidScroll(_:)
。
https://developer.apple.com/reference/uikit/uiscrollviewdelegate/1619392-scrollviewdidscroll
请注意,您可以使用UIScrollView.contentOffset.y < 0
检查它是否已滚动到顶部之上。
答案 1 :(得分:0)
1) 您可以使用refreshcontrol并按您希望的方式对其进行自定义。建议使用它作为其核心API,并为您提供有趣的动画。加上这是通用的,并在任何地方使用,所以用户已经知道如何使用比较你的滚动和持有一秒钟的手势。
- (void)viewDidLoad {
...
UIRefreshControl * refreshControl = [[UIRefreshControl alloc] init];
[refreshControl addTarget:self action:@selector(handleRefresh :) forControlEvents:UIControlEventValueChanged];
[self.myTableView addSubview:refreshControl];
...
}- (void)handleRefresh:(id)sender { //在这里刷新...}
答案 2 :(得分:0)
您可以将KVO用于contentffset
参数
这是我的一个Github存储库
如果你想要xiaoyulevin@gmail.com ,请联系我