0

UITabBarController にタップ ジェスチャを追加する方法について質問があります。UITabBarController には既にタップ ジェスチャが組み込まれているため (タブ バー上のタブ バー項目のタップに応答)、技術的には独自のジェスチャを tabBarController に追加できますが、tabBar は独自のネイティブ タップ ジェスチャを失います。以下は私がやろうとしていることです:

UIViewController *VC1 = ....;
UIViewController *VC2 = ....;

UITabBarController  *tabBarController = [[UITabBarController alloc] init];
tabBarController.viewControllers = [NSArray arrayWithObjects: VC1, VC2, nil];
UITapGestureRecognizer *tapGR = [[UITapGestureRecognizer alloc]
                                             initWithTarget:VC1
                                                        action:@selector(tap:)];




[tabBarController.view addGestureRecognizer:tapGR];

これはタップ メソッド「tap:」に正しく応答しますが、tabBarController はタップ バー項目に対するネイティブのタップ応答を失います。次のように、tabBarController のビュー コントローラーの 1 つにジェスチャを追加しようとしました。

[VC1.view addGestureRecognizer:tapGR];

しかし、このようにすると、タブ バー項目のタップに対する tabBar のネイティブ タップ認識は保持されますが、タップ ジェスチャはまったく認識されません。

この種の問題を解決する方法について何か提案はありますか? 1 つの方法は、タップして tabBarController に移動する以外の別のジェスチャを選択することだと思いますが、私はむしろそれをしたくありません....

ご覧いただきありがとうございます!

4

1 に答える 1

1

すでにタップを処理しているコントロールのタップで正確に何をしようとしているのか疑問に思う必要があります。あなたが行っていることがユーザーを混乱させるかどうかを考慮してください。

ただし、必要にcancelsTouchesInView応じて、ジェスチャ認識エンジンを NO に設定してみてください。これにより、レコグナイザーによって処理されるだけでなく、タッチがビューに渡されるようになります。

于 2011-04-05T17:48:58.970 に答える