![](/img/trans.png)
[英]how to fail UILongPressGestureRecognizer for UIPanGestureRecognizer?
[英]How do I enable a single touch to handle both UILongPressGestureRecognizer and UIPanGestureRecognizer?
我只想在检测到长按后才执行平移手势。 我正在监视“ UIGestureRecognizerState.Changed”的长按手势,并调用我的选择器以在那里处理平移。 选择器触发(我的“ print()”检查显示在控制台中),但是在uiview(blueRec)实际移动/翻译之前,我必须抬起手指。
我知道长按和平移手势本质上都是连续的,但是我如何使用触发长按的初始按来平移触摸的uiview(blueRec)? 我不认为这完全适合-requireGestureRecognizerToFail:
我删除了下面的代码,仅包含必要的行。
@IBOutlet weak var graySuper: UIView!
@IBOutlet weak var blueRec: UIView!
@IBOutlet weak var blueLeading: NSLayoutConstraint!
@IBOutlet weak var blueTop: NSLayoutConstraint!
var longPressGesture:UILongPressGestureRecognizer!
override func viewDidLoad() {
super.viewDidLoad()
self.longPressGesture = UILongPressGestureRecognizer(target:self, action:"handleLongpress:")
self.longPressGesture.minimumPressDuration = 2
self.blueRec.addGestureRecognizer(self.longPressGesture)
}
func handleLongpress(sender:UILongPressGestureRecognizer) {
print("LPress")
switch (sender.state) {
case UIGestureRecognizerState.Began:
self.blueRec.center = sender.locationInView(self.graySuper)
break;
case UIGestureRecognizerState.Changed:
self.blueRec.center = sender.locationInView(self.graySuper)
break;
case UIGestureRecognizerState.Ended:
print("Press Ended ")
break;
default:
break;
}
}
我正在回答自己的问题,因为这是我目前尚无法解决的一个非常基本的解决方案。 希望这至少可以帮助某人。
长按手势足以跟踪可拖动对象的运动,并且不需要单独的平移手势,因为它出现在我的原始代码中。
@IBOutlet weak var graySuper: UIView!
@IBOutlet weak var blueRec: UIView!
@IBOutlet weak var blueLeading: NSLayoutConstraint!
@IBOutlet weak var blueTop: NSLayoutConstraint!
var longPressGesture:UILongPressGestureRecognizer!
override func viewDidLoad() {
super.viewDidLoad()
self.longPressGesture = UILongPressGestureRecognizer(target:self, action:"handleLongpress:")
self.longPressGesture.minimumPressDuration = 2
self.blueRec.addGestureRecognizer(self.longPressGesture)
}
func handleLongpress(sender:UILongPressGestureRecognizer) {
print("LPress")
switch (sender.state) {
case UIGestureRecognizerState.Began:
self.blueRec.center = sender.locationInView(self.graySuper)
break;
case UIGestureRecognizerState.Changed:
self.blueRec.center = sender.locationInView(self.graySuper)
break;
case UIGestureRecognizerState.Ended:
print("Press Ended ")
break;
default:
break;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.