Жест пальцем прерывает управление UISlider в iOS 13, но не в предыдущих версиях iOS - PullRequest
0 голосов
/ 19 сентября 2019

Примечание: Это бета-версия 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. Я могу перемещать большой палец на слайдере, если я перемещаю его очень медленно, но если я делаю любой вид пальцемдвижение, большой палец на ползунке перестает двигаться, и жест срабатывает.Как я могу предотвратить это?

Ответы [ 3 ]

2 голосов
/ 21 сентября 2019

У меня возникла та же проблема, и мне удалось ее решить, выполнив следующие действия:

Добавьте panGesture, который ничего не делает, к вашим ползункам и установите для их свойства cancellsTouchesInView значение false.

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

Теперь ваши ползунки должны скользить как нож, режущий масло, без прерывания движения.

1 голос
/ 24 сентября 2019

Что я сделал, так это использовал функцию gestRecognizer, чтобы остановить любые жесты, если на моих UISliders было обнаружено касание.Обязательно добавьте 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
}
1 голос
/ 21 сентября 2019

Я пытался найти что-то в течение последнего часа.Это похоже на распознаватель жестов смахивания как вмешательство в UISlider.

Проблема появляется, только если вы используете направление вправо / влево.Возможно, вам следует подождать, прежде чем обновлять свое приложение или изменить свой пользовательский интерфейс, чтобы использовать жест смахивания вверх / вниз.

В это время слайдер работает нормально, если вы немного подождете, прежде чем пошевелите пальцем.Надеюсь, Apple быстро это исправит.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...