UIRefreshControl 取消自定义单元格顶部的触摸 - Objective-c iOS
UIRefreshControl cancel touch on top of custom cell - Objective-c iOS
我的 UIRefreshControl
有问题:第一次触发后,它会取消触摸我的第一个自定义单元格(即使它是隐藏的),就像它是不可见的一样。
如果我从 superview 中删除它,然后再次添加它,问题仍然存在。
实际上我有一个 UITableView
,其中填充了一些数据。用户可以通过拉动它来刷新 table 视图,为此我在我的 table 视图中添加了一个 UIRefreshControl
,就像在 viewDidLoad()
中这样
self.refreshControl = [[UIRefreshControl alloc]init];
self.refreshControl.tintColor = [UIColor colorWithRed:0.35 green:0.78 blue:0.98 alpha:1.0];
[_tableView addSubview:self.refreshControl];
我没有向 refreshControl 对象添加选择器,因为我希望 tableView 仅在用户停止触摸屏幕时刷新。为此,我添加了这个 ScrollView 的委托方法:
- (void)scrollViewDidEndDecelerating:(UIScrollView*)scrollView {
if (self.refreshControl.isRefreshing) {
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
dispatch_sync(dispatch_get_main_queue(), ^{
[self refreshTable];
});
});
}
}
这是我的刷新方法:
- (void)refreshTable {
//refresh code
[self.refreshControl endRefreshing];
}
我不想因为这个问题将我的应用程序上线,即使这不会阻止用户使用它!
在此先感谢您的帮助!
我找到了解决方法post
在我的例子中非常有效,我不必添加选择器,只需实现那些 UIScrollViewDelegate 的方法:)
我的 UIRefreshControl
有问题:第一次触发后,它会取消触摸我的第一个自定义单元格(即使它是隐藏的),就像它是不可见的一样。
如果我从 superview 中删除它,然后再次添加它,问题仍然存在。
实际上我有一个 UITableView
,其中填充了一些数据。用户可以通过拉动它来刷新 table 视图,为此我在我的 table 视图中添加了一个 UIRefreshControl
,就像在 viewDidLoad()
self.refreshControl = [[UIRefreshControl alloc]init];
self.refreshControl.tintColor = [UIColor colorWithRed:0.35 green:0.78 blue:0.98 alpha:1.0];
[_tableView addSubview:self.refreshControl];
我没有向 refreshControl 对象添加选择器,因为我希望 tableView 仅在用户停止触摸屏幕时刷新。为此,我添加了这个 ScrollView 的委托方法:
- (void)scrollViewDidEndDecelerating:(UIScrollView*)scrollView {
if (self.refreshControl.isRefreshing) {
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
dispatch_sync(dispatch_get_main_queue(), ^{
[self refreshTable];
});
});
}
}
这是我的刷新方法:
- (void)refreshTable {
//refresh code
[self.refreshControl endRefreshing];
}
我不想因为这个问题将我的应用程序上线,即使这不会阻止用户使用它!
在此先感谢您的帮助!
我找到了解决方法post
在我的例子中非常有效,我不必添加选择器,只需实现那些 UIScrollViewDelegate 的方法:)