在我的应用程序中,我使用Swipe Gesture Control。我有一个表视图和一个视图控制器。 我的视图设计将如下: - 当滑动它会很好。但问题是,当快速滑动时,它会显示为重叠的条形按钮 解决方案是什么。我刚试过这段代码 我也在表视图中使用了隐藏按钮的代码它不能在我的p ...
提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供 中文繁体 英文版本 中英对照 版本,有任何建议请联系yoyou2525@163.com。
注意:这是 iOS 13 beta,但也可以适用于明天的正式版本。
更新 2:我用更大的拇指图像替换了它,但我仍然遇到问题。
更新:如果我非常精确地触摸 slider 上的拇指,它看起来仍然可以连续控制。 但是为什么这会改变,我怎样才能让它像以前一样控制呢?
我的视图中添加了一个滑动手势识别器:
let swipeRight = UISwipeGestureRecognizer(target: self, action: #selector(self.respondToSwipeGesture))
swipeRight.direction = UISwipeGestureRecognizer.Direction.right
self.view.addGestureRecognizer(swipeRight)
稍后,我在同一个视图中添加了一个 UISlider:
let slider = UISlider()
let sliderLength:CGFloat = 175
slider.frame = CGRect(x:0,
y:CGFloat(customHeight) - 35,
width:sliderLength,
height:35)
slider.minimumValue = -1.2
slider.maximumValue = 0.6
slider.setValue(Float(snowSliderValAdder), animated: false)
slider.addTarget(self, action: #selector(self.updateSnowSliderValue(_:)), for: .valueChanged)
view.addSubview(slider)
过去工作正常,现在在 iOS 13 中表现不佳。如果我非常缓慢地移动它,我可以在 slider 上移动拇指,但如果我做任何类型的滑动动作,Z10BF08F0BBD4689475BE65B4 上的拇指停止移动并且手势是触发。 我怎样才能阻止这种情况发生?
我遇到了同样的问题,并设法通过执行以下操作来解决它:
向您的滑块添加一个不执行任何操作的 panGesture,并将其 cancelsTouchesInView 属性设置为 false。
let panGesture = UIPanGestureRecognizer(target: nil, action:nil)
panGesture.cancelsTouchesInView = false
slider.addGestureRecognizer(panGesture)
现在,您的滑块应该像刀切黄油一样滑动,不会中断滑动。
在过去的一个小时里,我试图找到一些东西。 它看起来像滑动手势识别器对 UISlider 的干扰。
仅当您使用右/左方向时才会出现问题。 也许您应该在更新您的应用程序或更改您的 UI 以使用向上/向下滑动手势之前等待。
此时slider只要稍等片刻再移动手指即可正常工作。 希望苹果能尽快解决。
如果在我的 UISliders 上检测到触摸,我所做的是使用gestureRecognizer function 来停止任何手势。 确保添加 UIGestureRecognizerDelegate 并将 UISwipeGestureRecognizer 的委托设置为 self。
func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldReceive touch: UITouch) -> Bool {
if touch.view == self.view.viewWithTag(viewTags.MySlider.rawValue) {
return false
}
else if touch.view == self.view.viewWithTag(viewTags.AnotherSlider.rawValue) {
return false
}
return true
}
SWIFT 5
可以使用手势识别器的委托方法解决问题,如下所示
func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldReceive touch: UITouch) -> Bool {
if touch.view?.isKind(of: UISlider.self) ?? false {
return false
} else {
return true
}
}
覆盖您创建的自定义视图的方法也可以解决问题。
override func gestureRecognizerShouldBegin(_ gestureRecognizer: UIGestureRecognizer) -> Bool {
return gestureRecognizer.view is Your_Custom_View
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.