Yes. I have a great trick for you.
Instead of having its own red outlined appearance, scrollview makes it a normal UIView that fills the screen. In this view, lay out your scroll view (table view) and image as shown.
Place a scroll that fills the borders of the root view (i.e. also fills the screen) above all other scroll views and images. Set the content size of this view as the total height of the content of all the views you want to scroll. In other words, there is an invisible scrollview sitting on top of all your other views, and its content size height is the internal size of the size of the scrolling image (tableview) or image height.
The hierarchy should look like this:

Then this scroll at the top that you created with really high content size makes it a delegate to your controller. Implement scrollViewDidScroll and we will work with magic.
Scrollviews basically scroll, adjusting the origin using funky momentum formulas, etc. Therefore, in our scrollViewDidScroll method scrollViewDidScroll we simply adjust the boundaries of the base views:
-(void)scrollViewDidScroll:(UIScrollView *)scrollView{
You will find that since scrollViewDidScroll is called every frame of the animation, this artificially scrolling of hidden views looks really natural.
But wait! I can hear you talking. This scrollable top view now captures ALL strokes, and the gaze below it also needs to be touched. I have an interesting solution for this.
Set the scroll bar at the top so that the screen does not appear somewhere (i.e., set its frame off-screen, but the same size.), And then in your viewDidLoad method you add scrollview panGestureRecogniser to the main view. This will mean that you get a full increase in iOS scrolling and so on without actually displaying it on the screen. The hidden scroll view is now likely to be changed since its recognizing gesture sign will cause a call (they work differently with UIEvent handling), so you will need to delete it.
- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. [self.view addGestureRecognizer:self.scrollview.panGestureRecognizer]; [self.underScrollview removeGestureRecognizer:self.underScrollView.panGestureRecognizer]; //further code to set up content sizes and stuff }
I liked doing this, so the link to the sample project on github: https://github.com/joelparsons/multipleScrollers
EDIT:
To display the scroll bar for the top scroll when it is off the screen, no matter where you place it, you can set scrollIndicatorInsets to an insert created as follows:
CGPoint scrollviewOrigin = self.scrollview.frame.origin; self.scrollview.scrollIndicatorInsets = UIEdgeInsetsMake(-scrollviewOrigin.y,0,scrollviewOrigin.y,scrollviewOrigin.x);
* caution that scrollview should still be the correct height, but I'm sure you understand this idea.
And then, to draw a line outside the visible scroll borders, you must turn off the clips to the borders
self.scrollview.clipsToBounds = NO;