问题
I've got a UIRefreshControl at the top of my table.
The screen is in landscape.
The trouble is, I can't pull down far enough in order to trigger the refresh, because there is too little space in Landscape. Is there a way to adjust the amount you have to pull down?
回答1:
Remember that your tableview is just a subclass of UIScrollView. In your controller, implement scrollViewDidScroll
method and call -beginRefreshing
on your UIRefreshControl like below.
But the animation of the UIRefreshControl while going to refreshing state wont be as smooth as you would expect. But it works.
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
if (scrollView.contentOffset.y < -98 && ![self.refresher isRefreshing]) {
[self.refresher beginRefreshing];
//do all the work
[self.refresher endRefreshing];
}
}
回答2:
The way you can adjust how far you have to pull is by altering the height of the UITableView
. UIRefreshControl
adjusts its maximum distortion height proportionally to the height of the tableView. If you can't change the height of the tableView, then please file a bug with the details of your situation and it will hopefully be addressed in a future iOS release.
Also, have you tried pulling down more quickly?
回答3:
if your contentsize
has the height is not enough to pull down, you might need to enable its vertical by using self.collectionView.alwaysBounceVertical = YES;
来源:https://stackoverflow.com/questions/12710755/uirefreshcontrol-in-landscape