Ответ 1
Для отладки этого сценария я использовал следующий код:
- (void)findMisbehavingScrollViews
{
UIView *view = [[UIApplication sharedApplication] keyWindow];
[self findMisbehavingScrollViewsIn:view];
}
- (void)findMisbehavingScrollViewsIn:(UIView *)view
{
if ([view isKindOfClass:[UIScrollView class]])
{
NSLog(@"Found UIScrollView: %@", view);
if ([(UIScrollView *)view scrollsToTop])
{
NSLog(@"scrollsToTop = YES!");
}
}
for (UIView *subview in [view subviews])
{
[self findMisbehavingScrollViewsIn:subview];
}
}
В зависимости от того, сколько UIScrollViews вы найдете, вы можете изменить этот код, чтобы отладить вашу конкретную ситуацию.
Некоторые идеи:
- Измените цвета фона различных прокрутки, чтобы идентифицировать их на экране.
- Распечатайте иерархию представлений этих списков прокрутки, чтобы идентифицировать все их супервизоры.
В идеале вы должны найти только один UIScrollView в иерархии окон, который имеет scrollsToTop для параметра YES.