wwjdm
wwjdm

Reputation: 2596

ios:UITableView wont scroll to bottom

I have a scroll view with 3 UITableViews in it for paging. All of the UITableViews loads more cells of data. The first UITableView loads more cells than the other two. When viewing this first UITableView I am able to scroll to the bottom, but when I scroll to a second UITableView and back to the first UITableView I can no longer scroll all the way down. It seems as though I have to resize my scroll view. Why can't I scroll to the bottom after a view refresh? Any help would be great.

*The first UITableView has a search bar at the top. The other two do not. I tried removing the search bar, but the error still occurs.

//Create a frame for each page and add the page to the scroll view
- (void)frameToScrollView{

if (pages!=NULL) {

    for (int i = 0; i < pages.count; i++) {

        //Get the current view controller
        UITableViewController *controller = [pages objectAtIndex:i];

        //Create a frame for the current table view controller
        CGRect frame = controller.view.frame;
        frame.origin.x = self.scrollView.frame.size.width * i;
        frame.origin.y = 0;
        frame.size = self.scrollView.frame.size;
        controller.view.frame = frame;

        //Add the the current table view controller page to the scroll view
        [self.scrollView addSubview:controller.view];
    }
  }
}

Set Other properties:

//Set the properties for the scroll view
- (void)setScrollViewProperties{
     self.scrollView.contentSize = CGSizeMake(self.scrollView.frame.size.width * pages.count,     self.scrollView.frame.size.height);
    self.scrollView.contentOffset = CGPointMake(self.scrollView.frame.size.width, 0);
    self.scrollView.scrollsToTop = NO;
}

Upvotes: 0

Views: 2701

Answers (3)

wwjdm
wwjdm

Reputation: 2596

Got it working:

(1) After "load more" cell is clicked and information is received I remove all subviews
(2) Then I create new frames and add them back to the subview
(3) Last I reload the table data

Upvotes: 0

user2197398
user2197398

Reputation:

UITableView is a subclass of UIScrollView. So you are basically adding 3 scrollviews to a scrollview. I dont think this is advisable.

I think the problem here is that the device is confused as to which scrollView will handle the touch/drag event.

If you really need the scrollView for paging, I suggest you create the scrollView, but disable touch event for this. You can add buttons to allow page navigation (instead of allowing user to do left/right swipe). This way, you can ensure that only the tableview that is visible is going to get the touch/drag event.

Upvotes: 1

wwjdm
wwjdm

Reputation: 2596

Found similar problem here: UITableView Won't Scroll In Certain Conditions.

My first UITableView has a search bar at top.

In the post above they recommend adding [self.tableView setAlwaysBounceVertical:YES];

I tested this and it does not work. I put it in my view did load for the UITableView.

Upvotes: 0

Related Questions