2011-03-10 33 views
0

我是比較新的對象 - 並沒有到我的眼睛導航的關閉又:)定製的UITabBarController在iPhone

我正在寫一個自定義的標籤欄類作爲一個鍛鍊的舞臺多學一點&我需要一個項目,我正在做。我的想法是創建一個普通的UITabBarController,然後隱藏視圖並用我自己的視圖替換它,迄今爲止已經工作,我已經獲得了理想的美學。正如你可以在這裏看到,

Can't post image due to lack of reputation, click here to see it :)](http://www.samjordan.co.uk/grabs/16845b4daf900c994e95a31a66ecf1f1.png)

,我用得到這個can be seen at this gist的代碼。我遇到的問題是觸摸事件似乎沒有觸發。起初我以爲這是因爲該按鈕位於UIImageView中,因此啓用了用戶交互,但仍然沒有運氣!

我會很感激任何幫助,會讓我解決問題。正如我所說的,我對Obj-C來說是比較新的,所以它可能只是簡單的我錯過了!

+1

你爲什麼這樣做?內置標籤欄有什麼問題?一些非常出色的人在這個框架上工作,我保證你不會重現一些和內置控制器一樣好的東西。 – 2011-03-10 20:06:08

+0

爲什麼不簡單地重寫你的子類中的繪圖方法? – 2011-03-10 20:06:51

+1

@Dave我這樣做主要是作爲一個學習練習:)只是想看看我是否可以做到這一點,從來不想取代蘋果的tabbar(這太棒了)。 – spamoom 2011-03-10 20:10:30

回答

0

我懷疑,如果你沒有收到觸摸事件,這是因爲你已經添加了超視圖範圍之外的子視圖。如果是這種情況,您將永遠不會收到觸摸事件,因爲觸摸永遠不會進入超級視圖,因此永遠不會進入您的子視圖。

如果是這種情況,可以嘗試將視圖添加到窗口中。

我最近創建了一個自定義選項卡欄。這裏有一些事情我瞭解到:

  1. 您可以UITabbar的自定義子類覆蓋drawRect(或者在一個類別擴展)。然而它是有限的,你不能繪製在標籤欄的邊界之外。

  2. 您可以繼承UITabBar並添加自定義子視圖。如果您的子視圖大於標籤欄,請務必設置self.clipsToBounds = NO

  3. UITabbar在創建後添加自己的子視圖。

  4. 通過設置self.delegate = self並實現tabbar委託方法,您可以掛鉤到自定義子類中的觸摸事件中。

我會繼續從頭開始實施標籤欄,這將是一個很好的學習經驗,就像你說的。

+0

我把這個標記爲答案,因爲它回答了我的問題。但是,不是戴夫德隆的評論,這證明了一個非常好的點:) – spamoom 2011-03-11 00:30:09

+0

而不是,我的意思是說:) – spamoom 2011-03-12 09:47:01