问题描述
|
触摸选项卡图标时,即使已经选择了图标,也可以调用方法吗?如果要显示子视图,我想使其在触摸时删除子视图。
我确定必须有一种方法可以执行此操作,因为我在其他应用程序中看到了它,但是找不到任何文档。
解决方法
从Apple文档获取UITabBarDelegate:
- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item
用户选择选项卡栏项目时发送给委托。 (需要)
如您所见,正如Apple文档所述,仅在选择选项卡时才发送此消息
重要说明,点击选定的选项卡栏按钮已经存在(未记录?)默认的of1行为:
如果选项卡包含“ 2”,它将向其发送“ 3”消息。您可以在任何iOS应用程序上进行检查。
因此,在覆盖此默认(和用户期望的)行为之前要当心,这通常是一个坏主意。
苹果可能故意在“ 1” API中隐藏了您想做的事情。
但是,如果您仍然希望这样做,则有一些建议:
小型但不容易破解:显示tabBar后,递归浏览其.subviews
树以查找(我希望,待确认)I6的继承类(= privateUITabBarButtons
或类似的东西)以在TouchUp事件上添加目标/选择器对(您可能必须先删除默认行为,这可能很棘手)
最糟糕的解决方案,但可能是唯一的解决方案:不要使用UITabBar
,而是自定义类。我很确定有现成的可以模仿ѭ8的开源组件,但是很抱歉,我从未使用过或搜索过。
, 您可以拥有UITabbarcontroller的代表,
- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_3_0);
- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController;
还请仔细阅读该文档:UITabBarController委托协议