注意:这是 iOS 13 测试版,但也可以申请明天正式发布。

更新 2:我用更大的拇指图像替换了它,但我仍然遇到问题。

更新:如果我非常精确地触摸滑块上的拇指,它看起来仍然可以连续控制。 但是为什么会这样改变,我怎样才能像以前一样控制它?

我在视图中添加了一个滑动手势识别器:

    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 中表现不佳。如果我移动滑块很慢,我可以移动滑块上的拇指,但是如果我做任何滑动动作,滑块上的拇指停止移动,手势是触发。 我怎样才能阻止这种情况发生?

#1楼 票数:22

我遇到了同样的问题,并通过执行以下操作设法解决了它:

添加一个 panGesture ,它什么都不做,到你的滑块并将它们的 cancelsTouchesInView 属性设置为 false。

let panGesture = UIPanGestureRecognizer(target: nil, action:nil)
                    panGesture.cancelsTouchesInView = false
                    slider.addGestureRecognizer(panGesture)

现在,您的滑块应该像刀切黄油一样滑动,不会中断滑动。

#2楼 票数:1

我试图在最后一个小时内找到一些东西。 看起来滑动手势识别器干扰了 UISlider。

仅当您使用右/左方向时才会出现此问题。 也许您应该在更新您的应用程序或更改您的 UI 之前等待以使用向上/向下滑动手势。

此时,如果您在移动手指之前稍等片刻,滑块将正常工作。 希望苹果尽快修复。

#3楼 票数:1

如果在我的 UISlider 上检测到触摸,我所做的是使用gestureRecognizer 函数来停止任何手势。 确保添加 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
}

#4楼 票数:0

快速 5

问题可以使用手势识别器的委托方法解决,如下所示

func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldReceive touch: UITouch) -> Bool {
    if touch.view?.isKind(of: UISlider.self) ?? false {
        return false
    } else {
        return true
    }
}

#5楼 票数:0

覆盖您创建的自定义视图的方法也可以解决问题。

override func gestureRecognizerShouldBegin(_ gestureRecognizer: UIGestureRecognizer) -> Bool {
    return gestureRecognizer.view is Your_Custom_View
}

  ask by Chewie The Chorkie translate from so

未解决问题?本站智能推荐:

1回复

滑动手势与移动 UISlider nob 混淆了?

我的视图中有一个 UISlider,视图本身添加了一个 swipeGesture。 这样当用户向右滑动时,viewController 将返回到前一个。 但是,我的问题是,如果 UISlider nob 向右侧方向移动,它会与 swipeGesture 混淆,并且视图导航到前一个。 有没有办法自行
3回复

iOS 13 分段控制:删除滑动手势以选择分段

TLDR:如何在 iOS 13 上删除 UISegmentedControl 的滑动/平移手势识别器? 嗨,在 iOS 13 上,UISegmentedControl 发生了很多变化。 大多数情况下,这些变化是基于外观的。 但是还有另一个功能更改弄乱了我的应用程序。 在 iOS 13 上,使用
2回复

在滑动手势期间iOS应用程序崩溃?

我正在练习开发人员课程的滑动手势练习。 我已经按照我的知识执行了这些步骤,但似乎每次执行滑动(向右或向上)时,我的应用程序都会崩溃。 我已经搜索了一个解决方案,但似乎无法找出它崩溃的原因。 我已将“ : ”添加到我的操作中,并将UIGestureRecognizerDelegate添加
2回复

UISlider + UISwipeGestureRecognizer第一次不工作

在我的主视图控制器中,我有一个uislider。 同时我将UISwipeGestureRecognizer分配给self.view,因为我想检测整个视图上的手势。 问题是每当我滑动滑块时,手势识别器也捕获它,并且滑块行为不稳定且不好。 这是我的代码(手势部分) 正如我在这里
1回复

收集单元格中的滑动手势

我正在尝试在集合视图单元格内进行滑动手势。 我尝试使用本教程https://www.youtube.com/watch?v=BZ_Ke0dYpdw,但它不适用于收集单元格,我不知道如何使其在那里工作。 这是我到目前为止的代码: 这给了我错误 : '类型'Home'的值没有成
1回复

添加动画以在Swift中滑动手势

我的应用程序中有一个滑动手势,当您滑动时,它会更改屏幕上的文本。 我将如何使它看起来像是滑向新文本,而不是立即更改文本?
3回复

滑动手势迅速更改UISlider值

我有一个滑动手势的UIView。 当我尝试更改该值时,它可以工作,但是该值从0跳到20。我希望该值在滑动时不断变化。 我该怎么做?
1回复

使滑动手势动画

当我在屏幕右侧滑动或左侧更改标签栏时,我有滑动手势在标签栏之间切换我是如何制作它所以看起来它滑动到右侧或左侧标签栏而不是立即改变标签栏