根据第一次或第二次来区分触摸
Differentiating touches based on first or second
我正在尝试实现 2 种不同的基于触摸的行为。第一个行为的逻辑是这样的:
override func touchesMoved(touches: Set<NSObject>, withEvent event: UIEvent) {
let touch = touches.first as! UITouch
let touchLocation = touch.locationInNode(self)
moveViewTo(touchLocation) //moves my view to touchLocation
}
现在,对于我的第二个行为,我想根据手指在屏幕上的位置旋转视图。为此,我尝试了这个:
override func touchesMoved(touches: Set<NSObject>, withEvent event: UIEvent) {
let touch = touches.first as! UITouch
let touchLocation = touch.locationInNode(self)
rotateViewTo(touchLocation) //rotates my view to face touchLocation
}
现在,我希望这两种截然不同的行为同时起作用。特别是,我希望第一次触摸改变视图的位置,第二次触摸旋转视图。
只有在视图中有两次触摸时才可以旋转,并根据第二次触摸改变方向。
有什么方法可以区分哪些是第一次触摸,哪些是第二次触摸?我找不到区分 touches: Set<NSObject>
的方法,因为 Set
本质上是一个无序集合。
我相信您唯一的选择是将您的第一次触摸存储为 var。我的 swift 不够强大,无法为您编写代码,但这里是步骤。
- 循环你的触摸,而不是只抓住第一个。
- 检查是否有 firstTouch(用于跟踪首次触摸的变量)
- 如果没有 firstTouch 分配第一次触摸并执行您的位置逻辑
- 如果有第一次触摸检查是否每次触摸都是第一次触摸。如果不是,则执行轮换逻辑。
- On touches ended and canceled 循环遍历每个触摸。如果它是 firstTouch,请将您的 var 设置为 nil。
抱歉,我无法为您写出所有代码,但希望这能让您朝着正确的方向前进。
我正在尝试实现 2 种不同的基于触摸的行为。第一个行为的逻辑是这样的:
override func touchesMoved(touches: Set<NSObject>, withEvent event: UIEvent) {
let touch = touches.first as! UITouch
let touchLocation = touch.locationInNode(self)
moveViewTo(touchLocation) //moves my view to touchLocation
}
现在,对于我的第二个行为,我想根据手指在屏幕上的位置旋转视图。为此,我尝试了这个:
override func touchesMoved(touches: Set<NSObject>, withEvent event: UIEvent) {
let touch = touches.first as! UITouch
let touchLocation = touch.locationInNode(self)
rotateViewTo(touchLocation) //rotates my view to face touchLocation
}
现在,我希望这两种截然不同的行为同时起作用。特别是,我希望第一次触摸改变视图的位置,第二次触摸旋转视图。
只有在视图中有两次触摸时才可以旋转,并根据第二次触摸改变方向。
有什么方法可以区分哪些是第一次触摸,哪些是第二次触摸?我找不到区分 touches: Set<NSObject>
的方法,因为 Set
本质上是一个无序集合。
我相信您唯一的选择是将您的第一次触摸存储为 var。我的 swift 不够强大,无法为您编写代码,但这里是步骤。
- 循环你的触摸,而不是只抓住第一个。
- 检查是否有 firstTouch(用于跟踪首次触摸的变量)
- 如果没有 firstTouch 分配第一次触摸并执行您的位置逻辑
- 如果有第一次触摸检查是否每次触摸都是第一次触摸。如果不是,则执行轮换逻辑。
- On touches ended and canceled 循环遍历每个触摸。如果它是 firstTouch,请将您的 var 设置为 nil。
抱歉,我无法为您写出所有代码,但希望这能让您朝着正确的方向前进。