I have no idea what I did, but I was implementing UIViewController Containment and all of a sudden the UIKit UIScrollView subclasses stopped responding to scrolling, even when I bypass all my custom application code. For example, this standard setup code…
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
UIViewController *vc = [[UIViewController alloc] init];
vc.view = [[UIView alloc] initWithFrame:self.window.frame];
UIScrollView *sv = [[UIScrollView alloc] initWithFrame:vc.view.frame];
sv.contentSize = CGSizeMake(400, 3000);
[vc.view addSubview:sv];
In a brand new Xcode project the scrollView scrolls, but in my existing project, scrolling has no effect and scrollbars do not appear. The AppDelegate code in both projects are identical, my only #import is UIKit.
In other words, all classes in my application that inherit from UIScrollView suddenly behave as if their scrollEnabled property is set to NO, and I can’t change this.
AFAIK this was caused by lousy third party code that used
UIPanGestureRecognizerswithout implementinggestureRecognizerShouldBegin:, thus overridding normal scroll behaviour.