Насколько я понимаю, у вас есть 2 UIScrollViews одновременно на экране.
Из того, что я видел и испытал,
На iOS 4 наличие 2-х UIScrollViews рядом дает неопределенное поведение. Один из прокрутки может прокручивать, иногда другой, иногда ни один.
В iOS 5, если у вас есть 2 UIScrollViews рядом, а затем нажмите в строке состояния «прокрутить вверх» UIScrollView справа «под вашим краном»
Я не знаю, как это работает, но это было моим наблюдением. iOS 5 умная !!
Если ваши UIScrollViews находятся один над другим, то, вероятно, поведение не определено. Я не проверял.
Надеюсь, это поможет.
Если вы все равно хотите, чтобы это работало, вот возможное решение.
Подкласс или Добавить категорию в UIWindow и добавить распознаватель жестов / или реализовать hitTest, который обнаруживает касание только для Y <20 и т. Д., А затем отправить его и прослушать это в вашем viewController и программно прокрутите UIScrollView наверх. </p>
EDIT
Реализуйте это в подклассе UIWindow (iPad)
- (UIView*)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
if ([event type] == UIEventTypeTouches && point.y < 20 && [[UIApplication sharedApplication] statusBarOrientation] == UIInterfaceOrientationPortrait) {
NSLog(@"Portrait");
} else if ([event type] == UIEventTypeTouches && point.y > 1004 && [[UIApplication sharedApplication] statusBarOrientation] == UIInterfaceOrientationPortraitUpsideDown) {
NSLog(@"PortraitUpsideDown");
} else if ([event type] == UIEventTypeTouches && point.x < 20 && [[UIApplication sharedApplication] statusBarOrientation] == UIInterfaceOrientationLandscapeLeft) {
NSLog(@"LandscapeLeft");
} else if ([event type] == UIEventTypeTouches && point.x > 748 && [[UIApplication sharedApplication] statusBarOrientation] == UIInterfaceOrientationLandscapeRight) {
NSLog(@"LandscapeRight");
}
return [super hitTest:point withEvent:event];
}