2009-11-21 152 views
0

我有一個UIViewController,我已經添加了兩個子視圖到它的視圖。一個子視圖是UIViewController的視圖。另一個子視圖是UITextField。捕捉子視圖觸摸事件

當用戶觸摸另一個視圖時,我需要關閉UITextField的鍵盤,但我無法弄清楚如何檢測這些事件。 UIViewController的tableView捕獲它們並打破UIResponder鏈,所以我的UIViewController從來沒有聽說過它們。我不想將層次結構中的所有東西都劃分子類,以便我可以沿着鏈條傳遞事件,那麼我的選擇是什麼?

我應該提到,我正在以編程方式做所有事情,沒有IB。

謝謝你們。

回答

3

所以深入挖掘後,我認爲沒有其他辦法。響應者鏈從接收到觸摸事件的UIView開始,如果它未被捕獲傳遞到該視圖的控制器,然後傳遞到它的超級視圖等等。

顯然,在UITableView中對每個UIView元素進行子類化對於這種情況來說是瘋狂的矯枉過正。

我所做的是創建一個透明的「觸摸屏」視圖,其框架尺寸與我的表格視圖相同。當鍵盤擴展時,我在桌子上添加了這個視圖,當它崩潰時,我將其刪除。這允許我在他們碰到桌子之前攔截這些觸摸。

+0

但你是如何設置視圖來攔截觸摸?當我這樣做時,觸動就會直通。 – jowie 2010-08-18 10:10:24

+0

@Joe Wibble - 您可能需要將UIView的userInteractionEnabled屬性設置爲「YES」。如果它被添加到表格視圖中,並覆蓋一些區域,它將攔截觸摸。 – DougW 2010-08-18 18:25:09

相關問題