簡體   English   中英

將UIButton放置在與UITabBar相同的空間中(隱藏時)

[英]Placing a UIButton in the same space as UITabBar (When hidden)

我正在開發一個基於UITabBarController的應用程序。 在我的屏幕設計之一,我需要隱藏標簽欄(我做UIViewsetHidden方法),那么我放在一個UIView其中tabBar通常會並添加了UIButtonUIView 但是,當點擊按鈕時,我沒有得到任何回應。 該按鈕不會收到任何觸摸事件。

我已經查看了解決方案的一些問題和答案。 但是大多數都需要子類化。 我已經嘗試了子類化並重寫了HitTest事件,但是即使在我的UIButton子類中也沒有調用該方法。

我正在開發iOS 7.1。

任何人都可以對此有所了解,以及如何讓按鈕響應觸摸事件?

編輯

我的自己和@Geet更仔細地研究了這個問題。 似乎任何放置在同一空間的東西都與UITabBar沒有接收到觸摸事件。 作為測試,我創建了一個新項目,其中包含很少的代碼,可以復制我原來的項目設置。

在示例應用程序中,我們將一個UIViewController嵌入在UITabBarController作為第一個選項卡。 然后將UIViewController嵌入到UINavigationController 從那里,我們將第二個UIViewController推入堆棧。

點擊頂部的“隱藏標簽欄”按鈕即可。 隱藏tabBar。 其中暴露了storyboard放置的綠色UIView ,其中UIButton連接到ViewControllers實現文件。 此按鈕根本不會接收任何觸摸事件。 只要我將按鈕移動到TabBar通常占據的空間上方,按鈕就會起作用。 將其向下移回屏幕底部 - 按鈕不再起作用。

似乎蘋果已禁止UITabBar下的所有觸摸事件。 我想知道這有什么辦法嗎?

我試過了:

self.tabbar.userInteractionENabled = NO;

這也沒有幫助。

也許有一種方法,我們能夠覆蓋UITabbarController的子類,當UITabBar被隱藏時,它將允許觸摸此規范?

如果有人想要使用示例項目 - 它在我的gitHub上:

https://github.com/TanderZA/UIButton-in-UITabbar-Space

Tander我終於明白了,按鈕沒有響應,因為它沒有收到我們的觸摸事件,你看到在我們的故事板中,View沒有連接到viewController,並且由於這個,當我以編程方式添加按鈕時它將永遠不會回答,一條簡單的線解決了這個問題

在功能

- (IBAction)doneButton:(UIBarButtonItem *)sender

就這樣做吧

- (IBAction)doneButton:(UIBarButtonItem *)sender
{
    /* Will hide or unhide the tabBar */

    self.tabBarController.tabBar.hidden=YES;
    [self.tabBarController setTabBarItem:nil];

    UIButton *butt=[UIButton buttonWithType:UIButtonTypeCustom];
    butt.backgroundColor=[UIColor redColor];
    butt.frame=CGRectMake(160, 530, 93, 40);
    [butt addTarget:self action:@selector(testButtonPressed:) forControlEvents:UIControlEventTouchUpInside];
    [self.tabBarController.view addSubview:butt];



}

self.tabBarController.view是我們的罪魁禍首,不讓觸摸事件通過,很高興找到它

我最近自己遇到過這種情況,在我的情況下,為self.tabBarController.view添加視圖不是一個選項。

將tabBar設置為半透明(除了隱藏它)允許觸摸通過。

[self.tabBarController.tabBar setTranslucent:YES];

我最近遇到了這個問題,我們使用isHidden隱藏了UITabBarUITabBar下面的一個子視圖控制器中的UIView不會收到命中事件。 它到處都收到了事件,但UITabBar曾經是可見和定位的地方。

前后旋轉手機會使問題消失。 我最終找到的解決方案是在將isHidden設置為true您需要在UITabBarController視圖上調用setNeedsLayout

self.tabBarController.tabBar.isHidden = true;
self.tabBarController.view.setNeedsLayout();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM