有人可以解释这两种方法之间的高级差异吗?特别是,你们什么时候使用一种,而且这些方法的目的有没有重叠? 他们似乎是为了相同的目的,但在文档中似乎没有任何关系,这让我感到困惑。beginTrackingWithTouch和touchesBegan有何区别?
回答
beginTrackingWithTouch:withEvent:方法
1)子类UIControl
2)发送至当与所述给定事件的触摸进入控制的边界的控制。
3)提供自定义的跟踪行为(例如,更改高亮显示)。 要做到这一点,使用一个或全部下列方法:beginTrackingWithTouch:withEvent:,continueTrackingWithTouch:withEvent:,endTrackingWithTouch:withEvent:方法
的touchesBegan:withEvent:方法
1)子类UIResponder
2)当一个或多个手指在视图或窗口中触碰时告诉接收器。
3)有两种常见类型的事件:触摸事件和动作事件。 触摸的主要事件处理方法是touchesBegan:withEvent :, touchesMoved:withEvent :, touchesEnded:withEvent :, touchesCancelled:withEvent :. 这些方法的参数将触摸与它们的事件相关联 - 特别是新的或已更改的触摸 - 并因此允许响应器对象跟踪和处理触摸,因为交付的事件通过多点触摸序列的阶段进行。每当手指触摸屏幕,在屏幕上拖动或从屏幕上抬起时,都会生成一个UIEvent对象。事件对象包含用于屏幕上所有手指的UITouch对象或仅从其上取下。
今天刚刚遇到这个问题,我认为最主要的区别是beginTrackingWithTouch和朋友只用于跟踪 - 而不是其他任何事情 - 特别是不用于目标/动作处理。所以如果你重写touchesBegan,那么当触摸结束时,你也要负责调用sendActionsForControlEvents。但是,如果你使用beginTrackingWithTouch,那是免费的。
我发现这通过实现beginTrackingWithTouch(用于自定义按钮控件),认为它只是处理touchesBegan的横向替换。所以在endTrackingWithTouch中,如果touchInside为true,我会调用sendActionsForControlEvents。最终的结果是这个动作被调用了两次,因为首先内建机制发出了动作,然后我调用它。就我而言,我只是在自定义突出显示方面很有趣,所以拿掉了对sendActionsForControlEvents的调用,并且都很好。
摘要:当您需要自定义跟踪时,使用beginTrackingWithTouch,并在需要自定义目标/操作处理(或其他低级细节)时使用touchesBegan。
- 1. 如何区分touchesBegan和touchesMoved
- 2. wcsncpy和wcscpy_s有何区别?
- 3. Date.current和Date.today有何区别?
- 4. V8和ES8有何区别
- 5. Cond和Case有何区别?
- 6. MD5CryptoServiceProvider和HMACMD5有何区别
- 7. MXML和Actionscript3有何区别
- 8. Mocha和Supertest有何区别?
- 9. PopUpWindow和Dialog有何区别?
- 10. MySQLi和PDO有何区别?
- 11. Proctractor和Selenium有何区别?
- 12. tincan和Scorm有何区别?
- 13. jquery.js和jquery.lite.js有何区别?
- 14. DynaActionForm和ActionForm有何区别?
- 15. Progressbar和progressDialog有何区别?
- 16. ifne和ifnonnull有何区别?
- 17. Nhibernate和SubSonic有何区别?
- 18. Href和Url.Content有何区别?
- 19. 4GL和DSL有何区别?
- 20. bcpow和pow有何区别?
- 21. REST和RESTful有何区别
- 22. MonoTouch和MonoDevelop有何区别?
- 23. DELETE_ORPHAN和DELETE有何区别?
- 24. ip_hdr和ipip_hdr有何区别?
- 25. vbscript和vb.net有何区别?
- 26. RMI和Corba有何区别?
- 27. ServletContext和ServletActionContext有何区别
- 28. 区别有和没有ObjectResult
- 29. 和vs有没有区别
- 30. touchesbegan和touchesmoved
好答案谢谢。 – petric
谢谢。把它放到上下文中:我有一个包含一堆子视图(例如标签)的自定义控件。用户应该能够拖动这些标签,并且它们以主控制(容器)控制的方式与彼此(在运动期间)交互。我应该使用哪种触摸方法来实现拖动:由UIControl提供的那些,还是由UIResponder提供的? – rmp251