2010-08-18 137 views
0

場景: 我在視圖控制器的頂部有一個UITabBar。 Tabbar上有幾個按鈕。 當用戶點擊任何按鈕時,我想要在點擊按鈕下方顯示彈出窗口。在特定位置放置彈出框

我可以顯示彈出沒有問題,但我不知道如何檢測按鈕的位置,因爲UITabItem不暴露幀結構。

我該如何解決我的問題?

回答

0

就可以計算出UITabBarItem的框架上自己:

CGFloat tabItemWidth = tabBar.bounds.size.width/[tabBar.items count]; 
CGRect tabItemFrame = CGRectMake(tabItemWidth * [tabBar.items indexOfObject:tabBar.selectedItem], 0, tabItemWidth, tabBar.bounds.size.height); 

(我沒試過這個代碼,但是這還是像它應該工作)。或者,你應該可以繼承UITabBar並覆蓋touchesEnded:withEvent :.在該方法中,將觸摸的位置存儲在ivar中。然後在你的UITabBarDelegate的tabBar:didSelectItem中:你可以使用觸摸的位置。

+0

根據發現進行更新: 如果標籤欄項目具有圖像,則可以使用UITabBar的selectedItem屬性獲取當前選定的UITabBarItem,然後獲取標籤欄項目圖像的框架。在調用presentPopoverFromRect時使用圖像的框架:inView:permittedArrowDirections:animated: – amok 2010-08-19 22:01:19

+0

提供的代碼不能編譯(第二行) - 無效的操作數爲二進制 – amok 2010-08-19 22:24:24

+0

對,我沒有意識到selectedItem不是索引。我已經更新了一些應該可以工作的內容,但是您可能需要使用它。看起來你已經有了解決方案。 – 2010-08-19 23:28:46