gpt4 book ai didi

Swift - 编程 UISwipeGestureRecognizer 来单独控制 2 个对象

转载 作者:行者123 更新时间:2023-11-28 09:18:39 25 4
gpt4 key购买 nike

Swift 的新手,但我正在一点一点地学习它。我想使用 UISwipeGestureRecognizer 同时控制 2 个对象。我让它为一个对象工作,但需要能够在屏幕左侧和右侧滑动以分别控制这两个对象。我猜我可以实现一个声明,如果滑动小于这个位置控制这个对象,否则控制这个对象只是不确定如何实现。这就是我用来控制一个对象的方法。

self.swipeRightGesture.addTarget(self, action: Selector("handleRightSwipe:"))
self.swipeRightGesture.direction = .Right
self.swipeRightGesture.numberOfTouchesRequired = 1
self.view?.addGestureRecognizer(self.swipeRightGesture)

func handleRightSwipe(sender: UIGestureRecognizer) {
if !self.isMoving && self.isMovingUp == true{
self.leftobjectmoveright()
self.isMoving = true
self.isMoving = false
self.isMovingUp = false

}
}

func leftobjectmoveright() {

self.leftobject.physicsBody?.velocity = CGVectorMake(75,0)

}

最佳答案

您如何让用户反射(reflect)三种手势(向上、向左和向右)中的哪一个是针对哪个对象的?您是在对象顶部开始手势吗?如果是这样的话,有几种方法。

在我看来,最合乎逻辑的方法是为每个对象创建一组单独的手势,然后在手势识别器中,您可以查看 gesture.view 以确定结果在要调用的手势识别器的选择器中。例如:

let leftObjectDownSwipe = UISwipeGestureRecognizer(target: self, action: Selector("handleDownSwipe:"))
leftObjectDownSwipe.direction = .Down
leftObject?.addGestureRecognizer(leftObjectDownSwipe)

let rightObjectDownSwipe = UISwipeGestureRecognizer(target: self, action: Selector("handleDownSwipe:"))
rightObjectDownSwipe.direction = .Down
rightObject?.addGestureRecognizer(rightObjectDownSwipe)

像这样使用 handleDownSwipe:

func handleDownSwipe(gesture: UISwipeGestureRecognizer) {
if gesture.view == leftObject {
println("swiped left one")
} else if gesture.view == rightObject {
println("swiped right one")
}
}

或者,如果两个不同对象的手势处理完全不同,您可以只为它们提供完全独立的手势处理程序。这只是这两个手势处理程序中有多少通用代码的问题。


或者,您可以将手势识别器放在包含这两个 View 对象的父 View 上:

let downSwipe = UISwipeGestureRecognizer(target: self, action: Selector("handleDownSwipe:"))
downSwipe.direction = .Down
view.addGestureRecognizer(downSwipe)

然后您可以让手势识别器查看 View 的宽度并将其与 locationInView 进行比较:

func handleDownSwipe(gesture: UISwipeGestureRecognizer) {
let location = gesture.locationInView(gesture.view)
if location.x < (gesture.view!.frame.size.width / 2.0) {
println("swiped left side")
} else {
println("swiped right side")
}
}

关于Swift - 编程 UISwipeGestureRecognizer 来单独控制 2 个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26285814/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com