gpt4 book ai didi

ios - 使用 PanGestureRecognizer 创建 UIView 并在不抬起手指的情况下激活它

转载 作者:搜寻专家 更新时间:2023-11-01 06:43:41 25 4
gpt4 key购买 nike

当 touchesBegan() 时,我通过在手指位置创建一个 UIView 在屏幕上创建了一个圆圈:

在 ViewController 中:

override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {

for touch in touches {

let pos = touch.locationInView(view)

let radius: CGFloat = touch.majorRadius * 2
let circleView = CircleView(frame: CGRectMake(pos.x - radius / 2, pos.y - radius / 2, radius, radius))
view.addSubview(circleView)

}
}

在 CircleView 中:

override init(frame: CGRect) {
super.init(frame: frame)

let recognizer = UIPanGestureRecognizer(target: self, action: Selector("handlePan:"))
recognizer.delegate = self
self.addGestureRecognizer(recognizer)

}

这会创建圆圈,但当我移动手指时它不会立即移动。相反,在 handlePan() 开始之前,我必须抬起手指并将其放回圆圈上。

考虑到可能有多个手指在屏幕上触摸和移动,是否可以在不抬起生成其父 View 的手指的情况下开始跟踪平移手势?

最佳答案

这里的问题是您同时使用了 touchesBegan 和 UIPanGestureRecognizer。为获得最佳效果,请使用其中一种。如果您只想使用平移手势(我会这样做),请执行以下操作:

func handlePan(gesture: UIPanGestureRecognizer) {
if gesture.state == UIGestureRecognizerState.Began {
//handle creating circle
} else if gesture.state == UIGestureRecognizerState.Changed {
//handle movement
}
}

希望这对您有所帮助!

关于ios - 使用 PanGestureRecognizer 创建 UIView 并在不抬起手指的情况下激活它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32814616/

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