我試圖實現一個UIResponder對象,它將允許我記錄屏幕活動,然後將事件傳遞給下一個響應者,以允許應用程序正常進行。我一直在研究這一點,並且看到兩種應該起作用的方法:創建一個根視圖並忽略放置在它上面的子視圖中的接觸,允許根視圖處理它們;或者創建一個添加到所有子視圖的GestureRecognizer。我的應用程序有多個視圖,可以在主窗口中進行交換。UIResponder和事件傳遞的另一個問題
我已經嘗試了兩種方法並最終陷入了同樣的僵局:我在視圖(或識別器)中獲得了touchesBegan/touchesMoved/touchesEnded事件,但是當我將它們發送給響應者鏈時沒有任何反應。我已經嘗試了以下所有內容。請注意,「視圖」是從touch.view衍生和view.superview是我的「loginView」對象,其中包含被竊聽讓我在這裏按鈕:
[view hitTest:frame.origin withEvent:event];
[view touchesBegan:touches withEvent:event];
[view.superview hitTest:frame.origin withEvent:event];
[view.superview touchesBegan:touches withEvent:event];
[[view nextResponder] touchesBegan:touches withEvent:event];
[[view nextResponder] hitTest:frame.origin withEvent:event];
[[[view superview] nextResponder] touchesBegan:touches withEvent:event];
[[view superview] hitTest:frame.origin withEvent:event];
這些工作都沒有,而事實上「 [[view nextResponder] hitTest ...'產生警告。
我試過resignFirstResponder,甚至會嘗試一個sendAction,但我只是在這個時候抓住吸管。我已經嘗試將我的觀點放在鏈條的底部和頂部,並獲得相同的結果。顯然我錯過了一些東西,但我看不到什麼。
任何人都可以給我一個線索,接下來要做什麼?
- 山姆
謝謝,但是這就是我試過,它仍然不適合我的工作。事件永遠不會傳遞給下一個響應器。所有的例子都讓我看起來像我的工作,但事實並非如此。我的底層觀點與IBActions和Outlets綁定的事實與我們有什麼關係?我攔截按鈕並試圖使底層視圖的按鈕作出反應;它不是。我「消費」了touchesBegan事件(儘管我不想),並且沒有更進一步。 – YosemiteSam 2011-06-01 18:58:52
好吧,我接近了一點:我已經確定發送touchesBegin到一個UIButton對象似乎不會導致它觸發UIControlEventTouchUpInside事件。如果該事件未觸發,則與該按鈕關聯的回調不會觸發。因此,對於我的應用程序中的每個對象,我想監視我需要調用適當的「火災」事件?這似乎很快樂。 – YosemiteSam 2011-06-02 17:23:20