UITableView分页导致自动滚动跳转

时间:2015-01-09 11:51:01

标签: ios objective-c iphone uitableview

我有一个基本的UITableView,其中包含一个UI,可以说是n个单元格。 (可视化相对较薄的细胞,大约4合一iPhone5屏幕)

我的目标是当用户点击一个单元格时,它会扩展到整个屏幕的高度,并且tableview会变成分页。

以下是我通过代码执行此操作的地方: 注意:整个内容都是动画。

void (^tableBlock)(void) = ^{
        int bonus = 10;
        int diff = self.chooser.frame.origin.y - self.invitesTable.frame.origin.y+bonus;
        [self.invitesTable setFrame:CGRectMake(self.invitesTable.frame.origin.x, self.chooser.frame.origin.y+bonus, self.invitesTable.frame.size.width, self.invitesTable.frame.size.height-diff)];
        CGAffineTransform moveTable = CGAffineTransformMakeTranslation(0, diff);

        [tableView scrollToRowAtIndexPath:indexPath
                         atScrollPosition:UITableViewScrollPositionTop animated:YES];
    };

    void (^tableCompletionBlock)(BOOL) = ^(BOOL finished)
    {
        [tableView deselectRowAtIndexPath:indexPath animated:TRUE];

        BOOL isSelected = ![self cellIsSelected:indexPath];

        NSNumber *selectedIndex = [NSNumber numberWithBool:isSelected];
        [self.selectedIndexes setObject:selectedIndex forKey:indexPath];

        [UIView animateWithDuration:0.3 animations:^{

            [tableView beginUpdates];
            [tableView endUpdates];
        } completion:^(BOOL finished){

            [tableView scrollToRowAtIndexPath:indexPath
                             atScrollPosition:UITableViewScrollPositionTop animated:YES];

            [tableView setPagingEnabled:YES];
        }];
    };

    [UIView animateWithDuration:0.3 animations:tableBlock completion:tableCompletionBlock];

我在启用分页后面临一个问题,如果我已经扩展了除第一个单元格之外的任何单元格,则会导致tableview自动向下滚动1个前一个tableview单元格的近似高度。

启用分页后,如何停止此副作用。

经过调试,我注意到它与UITableView更新无关,即使只是删除它们,也就是简单地通过启用滚动错误仍然存​​在。

0 个答案:

没有答案