我有一個包含3個獨立子視圖的父視圖。孩子的意見分散在父母之間,沒有重疊(並且有一定的空間)。當用戶在屏幕上移動她的手指(而不是提起它)時,我想在他們進入和退出每個子視圖時跟蹤觸摸。在一個動作中觀察多個視圖的觸動
示例如果用戶開始觸摸子視圖外部的屏幕上的某個位置,然後將其手指劃過兒童1,兒童1之外,兒童2之上,然後放開,我期望這些事件被觸發:
- 觸摸開始
- 觸摸輸入的孩子1
- 觸摸退出孩子1
- 觸摸輸入的孩子2
- 觸摸結束
看來,如果的touchesBegan:withEvent:方法和touchesEnded:withEvent:方法方法將是在這種情況下有益的,但是當我確定他們對孩子視圖控制器,他們不這樣做正是我想要的 - - 如果用戶開始觸摸子視圖外,然後在子視圖上滑動,則不會觸發子項本身的觸摸事件。
當前解決方案:我目前正在使用一種解決方案,覺得很難做到這一點。我正在觀察touchesBegan:withEvent :, touchesEnded:withEvent :,並touchesMoved:withEvent:在父級上,獲取每個事件的座標,並確定它們是否位於孩子的範圍內。如果他們這樣做,我會觸發如上所述的適當事件。
這種方法主要工作,但感覺非常低效。感覺框架應該爲我處理這項工作。我的國家管理代碼有時會錯過一個「輸入」或「退出」的觸發器,我懷疑這是因爲觸摸事件不是按照意想不到的順序丟棄或傳到我的。我在這裏錯過了一個更好的方法嗎?
我相信性能使觸摸獨佔的,所以如果你開始在一個人慣於檢測,我想我讀一些有關啓用兩個觀點的多點觸摸或東西此目的。但我只是在這裏猜測。 – Pochi 2012-07-12 00:13:45
在父視圖上執行此操作,使用CGRectContainsPoint來查看locationInView位於其中一個子項的框架中。我現在不在我的計算機上,但可以在我回家時向您展示一個示例。 – Rob 2012-07-12 01:10:07