在示例項目aurioTouch中,應用程序委託代碼指示(並且我在其他地方已經讀過)傳遞給touchesBegan,touchesMoved和touchesEnded的touch事件對象將是同一個對象,而它仍然是一組用戶操作,例如作爲觸摸和移動手指。當我重寫UIScrollView並實現這些方法時,我得到的事件是不同的對象。我在這裏錯過了什麼?爲什麼UIEvent在touchesBegan和touchesMoved中有不同的對象?
0
A
回答
2
您是對的,UIEvent
在爲一個手勢提供觸摸事件時被重用。從docs:
表示觸摸 事件是持久的整個 多觸摸序列甲的UIEvent對象; UIKit爲傳送到應用程序的每個事件 重複使用同一個UIEvent實例的 。您不應保留事件對象或 任何從事件 對象返回的對象。如果需要將 信息從 一個階段的信息保留到另一個階段,則應該複製 從UITouch或UIEvent對象獲取的信息。
我推測您的病例行爲與UIScrollView
所做的特殊事件處理結果有所不同。滾動視圖延遲事件傳遞,因爲它們需要檢測用戶的滾動意圖(輕掃手勢)。所以他們必須有一種方法來保持UIEvents - 可能會複製它們以確保它們保持原始狀態。這可能是你看到不同物體的原因。
請注意,以上所有隻是猜測。
3
UITouch
對象將是相同的,但它們被打包在一個新事件中。
相關問題
- 1. 在touchesBegan方法中複製UIEvent對象
- 2. 的touchesBegan和touchesMoved卡
- 3. 如何區分touchesBegan和touchesMoved
- 4. touchesMoved調用沒有touchesBegan
- 5. touchesbegan,touchesmoved,touchesended問題
- 6. iPhone:泛移動使用touchesBegan,touchesMoved和touchesEnd
- 7. iPhone「touchesBegan」和「touchesMoved」消息...不要移動到觸摸中心
- 8. 爲什麼touchesMoved方法有時不會在iphone中被觸發?
- 9. 檢測對象,touchesmoved和UITouch
- 10. 有沒有什麼時候touchesBegan,touchesMoved和touchesEnded方法會在UIViewController和UIView內處理?
- 11. Response對象和Request對象有什麼不同?
- 12. 爲什麼我的UITableView不響應touchesBegan?
- 13. 爲什麼console.log()和調試器中的對象值不同?
- 14. 如何判斷touchesBegan中正在觸摸什麼對象?
- 15. 這些Date對象爲什麼不同?
- 16. Erlang與OOP對象有什麼不同?
- 17. 對象與文件有什麼不同?
- 18. 爲什麼Java的HashMap具有不同對象的不同行爲?
- 19. 爲什麼Java中有兩個對象不同?
- 20. UIGestureRecognizers與touchesBegan/touchesMoved/touchesEnded(準確性)
- 21. Touchesbegan使用touchesmoved時總是會觸發?
- 22. 爲什麼我在NSDate對象中獲得不同的時區?
- 23. 覆蓋FUNC的touchesBegan(觸摸:NSSet中,withEvent事件:的UIEvent){movingground.start()
- 24. 爲什麼迭代內部和外部的對象不同?
- 25. TouchesBegan特定對象
- 26. 爲什麼兩個不同對象的地址應該不同?
- 27. touchesBegan:(NSSet *)觸及事件:(UIEvent *)事件不會被調用
- 28. 爲什麼在同一行創建的兩個對象具有相同的對象,但這與列表不同?
- 29. 爲什麼Rebol中的「背景」和「對象」功能不同,但基本相同?
- 30. 爲什麼touch(set)會在touchesBegan中傳遞而不是觸摸?
當然aurioTouch沒有錯誤?行爲是否改變了,還是我誤解了示例應用程序代表的工作方式?查看pinchEvent的用法。 – 2011-05-12 18:46:36