У меня проблема с двумя бесконечными UIScrollView, которые не изменяют свои смещения должным образом.
Элемент в первом UIScrollView соответствует другому во втором.Затем я хочу поместить выбранный элемент на второе место и анимировать изменение в обоих UIScrollView.Чтобы сделать это правильно, я использую эти два метода:
Когда по элементу нажимают:
- (void)click:(id)sender {
NSInteger index = [[self cells] indexOfObject:sender];
if (index == 1)
{
CategoriesViewController *viewController = [[CategoriesViewController alloc] initWithNibName:@"CategoriesView" bundle:nil];
[[viewController tit] setText:NSLocalizedString([[self categories] objectAtIndex:1], nil)];
[[self navigationController] pushViewController:viewController animated:YES];
}
else
{
for (NSInteger i = 0; i < index - 1; i++)
{
NSObject *object = [[self categories] objectAtIndex:0];
[[self categories] removeObjectAtIndex:0];
[[self categories] addObject:object];
}
for (NSInteger i = 0; i < index - 1; i++)
{
CollectionCellViewController *cell = [[self cells] objectAtIndex:0];
[[self cells] removeObjectAtIndex:0];
[[self cells] addObject:cell];
}
for (NSInteger i = 0; i < index - 1; i++)
{
UIImageView *image = [[self images] objectAtIndex:0];
[[self images] removeObjectAtIndex:0];
[[self images] addObject:image];
}
[self updateViewsOffsets];
}
}
- (void)updateViewsOffsets {
NSInteger y = 0;
for (NSInteger i = 0; i < [[self cells] count]; i++)
{
CollectionCellViewController *cell = [[self cells] objectAtIndex:i];
[[cell view] setTag:i];
if (i == 1)
{
[cell setSelected:[[self categories] objectAtIndex:i]];
}
else
{
[cell setDeselected:[[self categories] objectAtIndex:i]];
}
CGRect rect = [[cell view] frame];
rect.origin.x = 0.0f;
rect.origin.y = y;
[[cell view] setFrame:rect];
y += [[self table] frame].size.height / 2.0f;
}
y = 0;
for (NSInteger i = 0; i < [[self images] count]; i++)
{
UIImageView *image = [[self images] objectAtIndex:i];
CGRect rect = [image frame];
rect.origin.x = 0.0f;
rect.origin.y = y;
[image setFrame:rect];
y += [[self gallery] frame].size.height;
}
[[self table] setContentOffset:CGPointMake(0.0f, [[self table] frame].size.height / 2.0f) animated:YES];
[[self gallery] setContentOffset:CGPointMake(0.0f, [[self table] contentOffset].y * 8.0f) animated:YES];
}
Изменение сделано, но без анимации, оно имеет то же поведение с YES или NO, он вызывает только scrollViewDidScroll: один раз.Тем не менее, я использую setContentOffset: animated: в других методах, где он работает правильно с обоими UIScrollView.
Любая идея, пожалуйста.Заранее большое спасибо.