我有一個簡單的視圖層次結構示例。如何防止UIView消耗用戶輸入
顯然主視圖空間是主空間中的用戶將與交互。在底部,我有可以彈出的標籤向用戶指出他/她在應用程序的進展中。通常,這些選項卡只佔用底部「自定義選項卡」矩形指示的空間,但它們可以一直向上擴展以填充「空白區域」框。
爲了讓選項卡仍然是可點擊的,我必須使選項卡視圖的框架成爲包含「自定義選項卡」空間和「空白空間」空間的完整矩形。這導致的結果是當「空白空間」沒有彈出選項卡時不與用戶交互,因爲輸入基本上被該UIView使用,而不是通過層次結構的其餘部分轉發。
我想這個問題的根源是「主視圖空間」和「空白+自定義選項卡」都是主窗口的子視圖。
如果用戶沒有主動點擊交互元素,是否有辦法告訴系統將用戶輸入轉發到同級視圖?例如,使用touchesBegan
,touchesEnded
等方法進行操作,這些方法會向操作系統指示此視圖未使用輸入。
編輯
這裏的視圖的另一個版本,展示了一個選項卡是開放的泰特:
EDIT2
一些簡單的測試後,它會似乎默認行爲是最頂層的視圖首先得到輸入。即使您在UITextField
的頂部有明確的UIView
,也是如此。將澄清UIView
將消耗在輸入,從而防止UITextField
被編輯
EDIT3
突片應該工作時,用戶可以點擊一個標籤上(尺寸如在第一圖像)的方式,然後它將展開以顯示與該選項卡關聯的縮略圖視圖(如第二張圖)。然後,用戶可以再次點擊該選項卡關閉它,並將尺寸返回到原始圖片。爲了讓標籤在打開時可點擊,我必須讓包含的視圖基本上足夠大,以包含所有4個標籤,就好像它們是打開的。這會在包含視圖中導致大量空白空間。這個空的空間導致屏幕上的輸入空間實質上是死的。如果主視圖空間中有一個由空白區域覆蓋的按鈕,用戶將無法點擊該按鈕。我希望能夠避免這種行爲,並讓該空白空間覆蓋的按鈕仍然可以點擊。
爲什麼你不只有一個視圖添加到窗口,然後你添加不同的子視圖到那個? – 2012-07-17 14:21:23
什麼樣的類代表'CustomTabs'和'EmptySpace'對象? – holex 2012-07-17 14:23:17
@holex'CustomTabs'和'EmptySpace'只是單個'UIView'子類的一部分 – 2012-07-17 14:24:22