我有一个 tableview A,其行条目自定义 segue 到 GridView B(实际上使用开源 MMGridView)。gridView/scrollView 的子视图单元格使用 touchesBegan/TouchesEnd 来检测它们的选择。
我正在使用情节提要,自定义转场由 tableView 中的 didselectrowatindexpath/performsegue 动画和启动。
问题在于,一旦选择了 tableview 行,额外的点击就会排队并传递到各个 gridCells。
在自定义 segue 中,我尝试设置 destinationviewcontroller.view.userInteractionEnabled = NO; 然后在destinationViewController 的viewDidAppear 中重新启用它。这不起作用,排队的触摸事件仍然传递到 gridView 的子单元格。
如何刷新或取消在自定义动画转换期间似乎已排队的任何触摸事件?
编辑:删除自定义 segue 似乎停止了“排队”触摸事件行为。或者,也许现在转场发生得足够快,以至于在此期间没有发生触摸事件?为了完整起见,这是我的自定义 uistoryboardsegue,它给我带来了问题:
#import "QuartzCore/QuartzCore.h"
@implementation TTOCustomSegue
-(void)perform {
UIViewController *sourceViewController = (UIViewController*)[self sourceViewController];
UIViewController *destinationController = (UIViewController*)[self destinationViewController];
//destinationController.view.userInteractionEnabled = NO;
CATransition* transition = [CATransition animation];
transition.duration = .4;
transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear];
transition.type = kCATransitionFade;
transition.subtype = nil;
[sourceViewController.navigationController.view.layer addAnimation:transition forKey:kCATransition];
[sourceViewController.navigationController pushViewController:destinationController animated:NO];
}
@end