2012-03-13 76 views
2

我有一個容器內的許多自定義UIViews,我用戶移動它們後動畫。要跟蹤他們的移動,我使用touchesBegan:獲取當前位置,並使用touchesMoved:更新位置。touchesMoved調用沒有touchesBegan

偶爾,特別是如果我搬到一個視圖最近(和它仍然可以被動畫回到原來的位置),如果我開始拖着另一查看touchesBegan:選擇將不會被調用,但touchesMoved:touchesEnded:會。如何調用touchesMoved:touchesEnded:而不是touchesBegan:首先被調用的視圖?

回答

1

可能值得重新閱讀Apple docs。我不知道touchesBegan保證被調用。

我猜你在記錄touchesBegan等事件。也許正確的事件正在觸發,但日誌消息出現「亂序」?

+0

我以爲我記得讀了touchesBegan保證被叫,但我想我誤解了。我正在記錄每個觸摸事件,當發生錯誤時,它從不記錄touchesBegan。如果我找不到更好的解決方案,我只會在標記被調用時留下一個標記,並且只有在該標記被設置時才執行touchesMoved和touchesEnded操作。 – Ned 2012-03-13 14:09:54

1

我發現與我的應用程序類似的問題。如果我快速觸摸第一個視圖並開始滑動,那麼touchesBegan事件從不會發生,但是一旦第一個視圖消失,我就開始觸摸移動。

根據這個答案,app starts ignores user interaction events when i call animateWithDuration:delay:options:animations:completion:,用戶互動事件在動畫時會被忽略,我認爲這與我們都看到的一致。嘗試使用UIViewAnimationOptionAllowUserInteraction選項或userInteractionEnabled屬性;這應該允許事件通過你所需要的。

相關問題