加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

如何识别Swift中的连续触摸?

发布时间:2020-12-14 05:23:02 所属栏目:百科 来源:网络整理
导读:如何识别 Swift代码中的连续用户触摸?连续我的意思是用户将手指放在屏幕上.只要用户触摸屏幕,我想将精灵套件节点移动到用户触摸的方向. 这个过程最困难的事情是跟踪多点触控环境中的单个触摸.这个“简单”解决方案的问题(即,在touchesBegan中打开“istouche
如何识别 Swift代码中的连续用户触摸?连续我的意思是用户将手指放在屏幕上.只要用户触摸屏幕,我想将精灵套件节点移动到用户触摸的方向.
这个过程最困难的事情是跟踪多点触控环境中的单个触摸.这个“简单”解决方案的问题(即,在touchesBegan中打开“istouched”并在touchesEnded中将其关闭)是如果用户触摸屏幕上的另一个手指然后提起它,它将取消第一次触摸的操作.

为了实现这种防弹,您需要跟踪其生命周期内的各个触摸.当第一次触摸发生时,您保存该触摸的位置并将对象移向该位置.应该将任何进一步的触摸与第一次触摸进行比较,如果它们不是第一次触摸则应该被忽略.这种方法还允许您处理多点触控,其中可以使对象朝向屏幕上当前的任何手指移动,然后如果第一个手指被抬起则移动到下一个手指,依此类推.

值得注意的是,UITouch对象在touchesBegan,touchesMoved和touchesEnded之间保持不变.您可以将UITouch对象视为在touchesBegan中创建,在touchesMoved中更改,并在touchesEnded中销毁.您可以通过将触摸对象的引用保存到在touchesBegan中创建的字典或数组中来跟踪触摸过程中的触摸阶段,然后在touchesMoved中,您可以检查任何现有触摸的新位置并更改如果用户移动手指,则可以使用对象(可以应用公差来防止抖动,例如,如果x / y距离小于某个公差,则不要改变路线).在touchesEnded中,您可以检查焦点中的触摸是否是结束的触摸,并取消对象的移动,或将其设置为朝向仍在发生的任何其他触摸移动.这很重要,就像你只检查任何旧的触摸对象结束一样,这也会取消其他触摸,这会产生意想不到的结果.

这篇文章在Obj-C中,但代码很容易移植到Swift并向您展示您需要做什么,只需查看“处理复杂多点触控序列”下的内容:https://developer.apple.com/library/ios/documentation/EventHandling/Conceptual/EventHandlingiPhoneOS/multitouch_background/multitouch_background.html

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读