我们在此示例中使用了UICollectionView
,但同样的问题将适用于UITableView
方法。
选择时,我们在集合视图单元格上有一个自定义动画。它将单元格设置为动画,然后我们有一个UIViewControllerTransitioningDelegate
。
- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath {
在这个方法中我们有一些自定义动画代码,一旦动画完成,我们就会触发segue(这是一个自定义过渡)。
问题
问题是当您快速选择两个单元格时,两者都会出现动画,然后会混淆过渡/导航栏。
在这种情况下,一次只处理一个动画的最佳方法是什么?禁用mutli select不会改变任何东西,因为理论上我们不是选择多个只是快速选择一个而是另一个。
答案 0 :(得分:0)
在didSelectItemAtIndexPath中将集合视图的allowsSelection属性设置为NO;这应该阻止用户选择第二个单元格。您可以在viewDidAppear中将其设置为YES,如果您稍后从您正在调整的控制器返回此同一集合视图。
答案 1 :(得分:0)
- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath {
if (self.cellAnimationInProgress == YES) {
return;
}
dispatch_async(dispatch_get_main_queue(), ^(void) {
//Code here is run on the main thread
self.cellAnimationInProgress = YES;
});
我使用了类似于上面提到的方法。在动画输出期间我保持BOOL并更新为YES的位置。然后当返回并动画回来一次完成时,BOOL会更新回NO,因此忽略第二次点击。