1

唯一のビュー コントローラーに UITabBar へのアウトレットがある単純なアプリがあります。また、UITabBarDelegate を実装し、UITabBar のデリゲートとして設定されます。

@interface TheMainViewController : UIViewController <UITabBarDelegate>
{
      IBOutlet UITabBar *theTabBar;
}

4 つの UITabBarItems のいずれかがタップされるたびに呼び出される次のメソッドを実装しました。本当に簡単なことをやってみました:

- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item
{
      tabBar.selectedItem = [tabBar.items objectAtIndex:0];
      return;
}

理論的には、最初のタブで常に選択されたままになる必要があり、UITabBarItem をタップするだけで完全に機能します (何も起こらず、最初のタブが常に選択されたままになります)。しかし、 UITabBarItem に触れて(指を離さずに)保持すると、とにかく選択が変わります!デバッグ、すべてが適切に呼び出されます。

selectedItem プロパティを変更しても効果がないのと同じように、ユーザーはまだアイテムを「下」に持っています (指で)。

良い回避策は何ですか?UITabBar をオーバーロードして、touchesBegan と touchesEnd をいじってみましたが、呼び出されません。UITabBarItem と同じです。

ああ、私のアプリケーションには十分な柔軟性がないため、UITabBarController の使用を提案しないでください。

とてもイライラします....ありがとう!

4

1 に答える 1

2

- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item ユーザーが指を離す前ではなく、指を離したときに呼び出されるようです。

UITabBarController を使用したくないことはわかっていますが、ここで必要なすべての機能を備えています。なぜコントローラーを使いたくないのですか?

動作するはずの UITabBarController デリゲート メソッド:

 - (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController

次に、そこに NO を返すことができ、選択は変更されません。

于 2010-03-25T16:03:31.677 に答える