iOSフルスクリーンジェスチャー
1202 ワード
UIN avigationViewControlのサブクラスを作成し、サブクラス
原理はシステムの戻りジェスチャーを手に入れて、システムのジェスチャーの作用の
targetとactionを探して以下のようにします.
viewDidLoad
メソッドに次のコードを書き込み、ナビゲーションコントローラを使用するときにこのサブクラスを使用すればよい.- (void)viewDidLoad {
[super viewDidLoad];
UIGestureRecognizer *sysges = self.interactivePopGestureRecognizer;
sysges.enabled = NO;
UIView *sysView = sysges.view;
id target = [[sysges valueForKey:@"_targets"] firstObject];
UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc]init];
SEL action = NSSelectorFromString(@"handleNavigationTransition:");
[pan addTarget:[target valueForKey:@"_target"] action:action];
[sysView addGestureRecognizer:pan];
}
原理はシステムの戻りジェスチャーを手に入れて、システムのジェスチャーの作用の
View
を手に入れて、runtime
で私たちが望んでいるtarget
とaction
を見つけて、それからpanジェスチャーをカスタマイズして、システムのtargetとactionを記入してokになりました.なぜ私たちがシステムのものを手に入れてジェスチャーをやり直すことができるのかというと、システムのジェスチャーがジェスチャーの作用範囲を修正したからです.targetとactionを探して以下のようにします.
unsigned int count;
Ivar *ivar = class_copyIvarList([UIGestureRecognizer class], &count);
for (int i = 0; i < count; i++) {
NSLog(@"%s", ivar_getName(ivar[i]));
}