Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

UIRefreshControl in Landscape

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?

like image 855
cannyboy Avatar asked Oct 03 '12 14:10

cannyboy


2 Answers

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];
    }
}
like image 102
Anand Avatar answered Nov 20 '22 05:11

Anand


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?

like image 29
Dave DeLong Avatar answered Nov 20 '22 06:11

Dave DeLong