2015-09-09 38 views
0

我相信這種情況將是非常典型的情況,但我無法得到它的工作。這裏是我的視圖關係:擴展UITabBarController(A) - > UINavigationController(B) - >擴展UIViewController作爲根視圖控制器(C) - >目標視圖控制器(D)與UIButton(E)。iOS的目標c用按鈕替換uitabbar,但按鈕沒有交互?

最初,作爲集合視圖的根視圖控制器正在顯示,然後在D的初始化期間推送到D,在viewWillAppear和viewWillLayoutSubviews中,我將代碼隱藏在Tabbar A中並保持B的導航欄顯示,並將D的視圖設置爲新的框架高度以確保它可以覆蓋整個屏幕,然後將UIButton E框架佈置到Tabbar A的框架。

的結果是按鈕E能否正常顯示,在先前的TabBar的位置,但它不會響應任何的手勢或touchupinside事件。

下面是d的代碼:

- (void)viewWillLayoutSubviews{ 
    [self.navigationController.tabBarController.tabBar setHidden:YES]; 
    [self.view setFrame:CGRectMake(self.view.frame.origin.x, self.view.frame.origin.y, self.view.frame.size.width, self.view.frame.size.height + self.navigationController.tabBarController.tabBar.frame.size.height)]; 
    [_button setFrame:CGRectMake(0.0f, screenRect.size.height - buttonHeight - self.navigationController.navigationBar.frame.size.height - [UIApplication sharedApplication].statusBarFrame.size.height, screenRect.size.width, buttonHeight)]; 
    [self.view addSubview:_button]; 
    [self.view bringSubviewToFront:_button]; 
} 

我嘗試使用

[self.view insertSubview:_button atIndex:0] 

過,並在調試器檢查視圖層次,所有LOOKS好,除了解僱沒有互動活動。

感謝您的幫助!

+0

我覺得你的層次結構看起來像一個消息傳遞應用程序(的TabBar控制器 - >歷史 - >您的收藏視圖(視圖控制器)要隱藏的TabBar當你推 – Mohamad

+0

是的,我想的TabBar隱藏什麼時候?我正在嚮導航控制器推送一個特定的視圖,這是行得通的,但視圖上的按鈕不能在tabor的位置點擊,如果我沒有隱藏tabbar,也不要將按鈕設置到該位置,嗯,但這不是我想要的 – jeffrey

回答

0
youNextViewController.hidesBottomBarWhenPushed=YES; 
[self.navigationController pushViewController:youNextViewController animated:YES]; 
+0

如果我讓你的問題爲真,這段代碼適合你:) – Mohamad

+0

在一般情況下,我相信你的回答會正確隱藏tabbar,但我只是發現我沒有描述我的問題很清楚。我的視圖層次結構更加複雜,因此我必須仔細檢查視圖層次結構,以便仔細查看哪個超級視圖框架比預期的要小,這將是按鈕無法點擊的根本原因,因爲按鈕超出了該框架並且不能接收交互事件。謝謝! – jeffrey