Iphone 无控制器的超宽带

Iphone 无控制器的超宽带,iphone,uitabbar,selecteditem,uitabbaritem,touches,Iphone,Uitabbar,Selecteditem,Uitabbaritem,Touches,我有一个简单的应用程序,其中唯一的视图控制器有一个到UITabBar的插座。它还实现UITabBarDelegate,并设置为UITabBar的委托: @interface TheMainViewController : UIViewController <UITabBarDelegate> { IBOutlet UITabBar *theTabBar; } 理论上,它应该在我的第一个选项卡上始终处于选中状态,当我只需点击任何uitabaritem时,它就可以完美地工作

我有一个简单的应用程序,其中唯一的视图控制器有一个到UITabBar的插座。它还实现UITabBarDelegate,并设置为UITabBar的委托:

@interface TheMainViewController : UIViewController <UITabBarDelegate>
{
      IBOutlet UITabBar *theTabBar;
}
理论上,它应该在我的第一个选项卡上始终处于选中状态,当我只需点击任何uitabaritem时,它就可以完美地工作(没有任何事情发生,第一个始终处于选中状态)。但是,当我触摸一个UITabBarItem并按住它时(不要把手指拿开),选择还是会改变!调试时,所有内容都会被正确调用

这就像更改selectedItem属性没有任何效果一样,因为用户仍然有“向下”项(手指在上面)

什么是好的解决办法?我试着让UITabBar超载,搞乱touchsbegind和touchsend,但他们甚至都没有被呼叫。UITabBarItem也是如此

哦,请不要建议使用UITabBarController,因为它对于我的应用程序来说不够灵活

太令人沮丧了……谢谢

似乎是
-(void)tabBar:(UITabBar*)tabBar didSelectItem:(UITabBarItem*)item
当用户拿起手指时调用,而不是在此之前

我知道您不想使用UITabBarController,但它具有您想要的所有功能。你为什么不想使用控制器呢

UITabBarController委托方法应该有效:

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

然后,您可以在其中返回NO,并且选择不会改变。

基本上,我已经有一大堆其他视图根据选项卡栏的状态设置动画(不仅仅是滑入和滑出)。此外,我的选项卡栏不像控制器那样位于底部。切换到控制器将需要一个我想要避免的重大重构。至于您的其他评论,当您单击并按住tabbaritem时,“didselectitem”函数会在一个小延迟后被调用,即使实际项目只有在您释放时才会高亮显示。
 - (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController