0

行エントリがGridView BにカスタムセグエされているテーブルビューAがあります(実際にはオープンソースのMMGridViewを使用しています)。gridView/scrollView のサブビュー セルは、touchesBegan/TouchesEnd を使用して選択を検出します。

私はストーリーボードを使用しています。カスタム セグエはアニメーション化され、tableView の didselectrowatindexpath/performsegue によって開始されます。

問題は、テーブルビューの行が選択されると、追加のタップがキューに入れられ、個々の gridCells に渡されることです。

カスタム セグエで、destinationviewcontroller.view.userInteractionEnabled = NO; を設定しようとしました。そして、destinationViewController の viewDidAppear で再度有効にします。これは機能せず、キューに入れられたタッチ イベントは依然として gridView のサブセルに渡されていました。

カスタム アニメーション トランジション中にキューに入っていると思われるタッチ イベントをフラッシュまたはキャンセルするにはどうすればよいですか?

編集:カスタムセグエを削除すると、「キューに入れられた」タッチイベントの動作が停止するように見えました。それとも、セグエがすぐに発生して、その間にタッチ イベントが発生しないのではないでしょうか? 完全を期すために、問題を引き起こしているカスタム 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
4

1 に答える 1