在示例项目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