【问题标题】:Avoid triggering touchesBegan: until a swipe gesture recognizer fails避免触发 touchesBegan:直到滑动手势识别器失败
【发布时间】:2014-07-17 02:48:13
【问题描述】:
我正在 iPad 上制作一款游戏,玩家可以向上、向下、向左或向右滑动来移动角色。攻击由touchesBegan:withEvent:控制
我的问题是角色一移动就会攻击。
有没有办法设置滑动手势,让代码在查看动作是否开始滑动之前不会运行touchesBegan:withEvent:?
【问题讨论】:
标签:
ios
cocoa-touch
uigesturerecognizer
uiswipegesturerecognizer
touchesbegan
【解决方案1】:
这不是一件容易的事。如果不使用一些自定义手势,我建议您尝试UISwipeGestureRecognizer 和UILongPressGestureRecognizer 的组合。我知道这听起来很傻,但事实并非如此:UILongPressGestureRecognizer 的作用与平移手势几乎相同,因此即使拖动手指,您也会收到事件。您需要设置一些适当的最小持续时间,直到它触发(取决于滑动手势)和一些较大的最小拖动长度,这样它就不会因为拖动而被取消。然后你需要删除触摸事件方法并将代码移动到长按手势动作。
为了解释结果,您的长按手势(如果设置正确)将与触摸事件一样工作,只是它会等待指定的持续时间。如果在此期间检测到滑动,您的长按手势将不会触发。似乎正是您所需要的...