我找不到替换UIPanGestureRecognizer
的默认UIScrollView
的方法。但是我需要调整导致UIScrollView
滚动的手势。
我只想识别速度更快的平底锅。另外,在移动一定距离(确保它不是初始慢动作)之后,要测量手指的速度。据我所知,使用UScrollView
的默认UIPanGestureRecognizer
无法实现这一目标。
如何用我自己的识别器替换它?
答案 0 :(得分:1)
更改底层手势识别器是错误的方法。您可以通过实施gestureRecognizer(_:shouldReceiveTouch:)的UIGestureRecognizerDelegate方法来完成您想要做的事。
只要您想要自定义的滚动视图不是UICollectionView,UITableView或类似类的一部分,您就可以设置手势识别器的委托。在委托中,您可以使用UIPanGestureRecognizer的velocityInView(_:)方法来决定是否允许手势识别器触发滚动。
答案 1 :(得分:1)
您也可以在这里实现touchesMoved方法。您可以在触摸之间进行比较以检查速度。像这样的东西,但它是伪代码
global firstpoint;
global secondpoint
override func touchesBegan(touches: NSSet, withEvent event: UIEvent){
for touch: AnyObject in touches {
let firstpoint = (touch as UITouch).locationInNode(self);
}
override func touchesMoved(touches: NSSet, withEvent event: UIEvent) {
for touch: AnyObject in touches {
let secondpoint = (touch as UITouch).locationInNode(self);
}
let diffx = secondpoint - firstpoint;
if diffx > "some value you choose for velocity"{
"do some action that you want";
}
else {
firstpoint = secondpoint;
}
}
这将为您提供一些可用于提供进一步操作的动作的速度。
答案 2 :(得分:0)
您可以尝试在scrollView上放置一个清晰的UIView,然后可以向其添加UIPanGestureRecognizer。然后,您可以为该GestureRecognizer设置一个选择器,然后可以告诉scrollView滚动。但是,您将负责确定每个高速盘的滚动距离。