2011-08-07 23 views
0

我正在試驗一些探測UI以查看其結構的代碼。作爲這個的一部分,我正在對UISegmentedControl進行hitTest,它嵌入在屏幕底部的UIToolbar中。我有這樣的結構:hitTest基於UISegmentmentedControl的中心返回UIToolbar

UIToolbar 
    UISegmentedControl 
     UISegment 
     ... 

我得到UISegmentedControl中心和命中測試是這樣的:

UIView *view = // code which gets a reference to the UISegmentedControl. 
frameInWindow = [view.window convertRect:view.frame fromView:view.superview]; 
CGPoint locationInWindow = CGPointMake(
        frameInWindow.origin.x + 0.5 * frameInWindow.size.width, 
        frameInWindow.origin.y + 0.5 * frameInWindow.size.height); 
UIView *target = [view.window hitTest:locationInWindow withEvent:nil]; 

我已經在這個無數次,我不明白爲什麼它集target而不是UISegmentedControl的UIToolbar。我預計目標是相同的控制。或者在分段控件內的一些UIView。

+0

您是否嘗試將該點可視化以確保它指向UISegmentedControl而不是UIToolbar? –

+0

是的,我已經拋棄了相關框架等的合作,一切都看起來正確。 – drekka

回答

0

的文檔說:

「此方法忽略了被隱藏查看對象,具有禁用 用戶交互,或具有α水平低於0.01此方法 不採取視圖的內容之中。因此,即使指定的點位於該視圖的內容的透明部分 中,仍然可以返回視圖。「

是否啓用了用戶與分段控制的交互?

+0

這是我研究過的東西。我用用戶交互價值拋出了UI的整個樹。除了每個按鈕使用的標籤和圖像之外,分段控件中的所有內容都已啓用。命中測試的doco說這不應該成爲一個問題,因爲它只使用屬性作爲是否處理控件子視圖的指示器。 – drekka