Imagine, there is a UIViewController with a UIScrollView in it. At the top of the view there is an UIImageView, some UILabels and other things. Furthermore, there is a UITableView which content is Dynamic Prototypes. I attach a picture to make it clear:
I haven't got a static amount of cells in the UITableView so it could be scrollable. My problem is the following: the UITableView scrolls in itself but I want to scroll the whole View. What is the best possibility to do that?
Possible solutions I've founded today
1) The first thing is: I create a UITableViewController and declare a header section in which I include all my labels, images etc. programmatically (I would love to use the interface builder for that...)
2) Another solution is to calculate the height of the view. I tried the best to do it like this way - but: without success. If this is the best way to do that: Can anybody give an example?
I would ditch the UIScrollView
and just use a UITableView
. You can add a UIView
object as the tableHeaderView
of the UITableView
just by dragging it in in Interface Builder. Now since everything is part of the UITableView
hierarchy, everything will scroll together as expected.
You could also try setting delaysContentTouches
to NO
on your scrollView
. Depending on your setup, this may make the scroll view respond to the touch first instead of the table view.
From Apples UIScrollView
Docs:
delaysContentTouches
A Boolean value that determines whether the scroll view delays the
handling of touch-down gestures.
@property(nonatomic) BOOL delaysContentTouches
Discussion
If the value of this property is YES
, the scroll view delays handling
the touch-down gesture until it can determine if scrolling is the
intent. If the value is NO
, the scroll view immediately calls
touchesShouldBegin:withEvent:inContentView:
. The default
value is YES
.
You'll have to (as you've mentioned) add the UIView
containing the image and buttons to the actual UITableView
. Embedding it in the scroll view will produce the undesired behavior that you're seeing.
I would recommend returning the UIView
as the header view for the first section of your table view. You can do this by implementing the UITableViewDelegate
method:
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section;
If you maintain an IBOutlet
to the view containing your image/labels, you can return it here.
this is same demo i hope its helps you from iphone sorce code library
http://developer.apple.com/library/ios/#samplecode/iPhoneCoreDataRecipes/Introduction/Intro.html
thank you