Ios 禁用UIScrollView惯性(滚动视图减速)Swift
设置:我有一个水平方向运行良好的滚动视图,还有一个UISweepGestureRecognitor,当我向下滑动时,它会触发到另一个视图的切换 问题:如果我在水平滚动时开始向下滑动(垂直滚动被禁用)而滚动正在减速,则向下滑动操作(segue)不会执行。它只在滚动减速完成后工作 有没有办法禁用滚动减速(又称惯性)以便可以立即检测到我的向下滑动手势?也许有一种解决方法可以强制首先检测UISweepGestureRecognitor 高度赞赏Swift中的解决方案 你看这里了吗? 答案Ios 禁用UIScrollView惯性(滚动视图减速)Swift,ios,swift,uiscrollview,swipe,Ios,Swift,Uiscrollview,Swipe,设置:我有一个水平方向运行良好的滚动视图,还有一个UISweepGestureRecognitor,当我向下滑动时,它会触发到另一个视图的切换 问题:如果我在水平滚动时开始向下滑动(垂直滚动被禁用)而滚动正在减速,则向下滑动操作(segue)不会执行。它只在滚动减速完成后工作 有没有办法禁用滚动减速(又称惯性)以便可以立即检测到我的向下滑动手势?也许有一种解决方法可以强制首先检测UISweepGestureRecognitor 高度赞赏Swift中的解决方案 你看这里了吗? 答案 -(voi
-(void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView{
[scrollView setContentOffset:scrollView.contentOffset animated:YES];
}
转换成swift是
func scrollViewWillBeginDecelerating(scrollView: UIScrollView) {
scrollView.setContentOffset(scrollView.contentOffset, animated: true)
}
Swift 3: 要禁用减速滚动,您可以尝试:
func scrollViewWillEndDragging (scrollView: UIScrollView, withVelocity velocity: CGPoint, targetContentOffset: UnsafeMutablePointer<CGPoint>) {
targetContentOffset.memory = scrollView.contentOffset
}
关于您的手势识别器干扰,您可以调用此方法来排除触摸:
func gestureRecognizer(gestureRecognizer: UIGestureRecognizer, shouldReceiveTouch touch: UITouch) -> Bool {
// insert here views to exclude from gesture
if touch.view!.isDescendantOfView(self.excludeThisView) {
return false
}
return true
}
UIScrollView有一个
PinchGestureRecognitor
和一个PanGestureRecognitor
。如果您有一个UISweepGestureRecognitor
,该手势很可能会被识别为UIPanGestureRecognitor
您可以添加依赖项来解决此问题:
scrollView.panGestureRecognizer.requireGestureRecognizerToFail(swipeGesture)
不幸的是,我在几分钟前尝试过该解决方案,发现它干扰了我的uisweepegesturecognitioner
向下滑动检测。一旦我使用scrollview,由于BeginDelegrating中的黑客攻击,我的任何手势都不会被检测到。也许是另一个在EndDecreating中的黑客作为解决方法?我不知道ScrollViewWillendDraging
,它看起来非常有趣。我用targetContentOffset.memory=scrollView.contentOffset
试过,但没有效果。由于某些原因,我的手势识别器仍然会因滚动视图中的减速(或任何反弹)而延迟。我的目标是允许手势识别器
立即执行,而不会因任何滚动减速而延迟。targetContentOffset现在是一个let变量。无法变异这实际上帮助我实现了我最初想要的。非常感谢。
scrollView.panGestureRecognizer.requireGestureRecognizerToFail(swipeGesture)