Как увеличить значение слайдера на 15? - PullRequest
1 голос
/ 24 июня 2019

У меня есть UISlider со значением 0, минимальным значением 0 и максимальным значением 360 (установленным из области утилит), и я хочу, чтобы значение увеличивалось на 15 (с размером интервала 15) при каждом пролистывании VoiceOver, и сделать это щелчком с каждым ударом. например проведя пальцем вправо один раз -> 15, дважды -> 30 и т. д. Я слушал, какое текущее значение на слайдере использует VoiceOver.

Я уже пробовал что-то похожее на:

float interval = 5.0f;//set this
[slider setValue:interval*floorf((slider.value/interval)+0.5f) animated:NO]; 

источник: https://stackoverflow.com/a/2519573/11693942

что я сделал на основе этого кода:

angle = Double(15 * floorf((sender.value/15) + 0.5))
sender.setValue(Float(angle), animated: true)

но это заставляет мой ползунок увеличиваться на 30.

Далее я попробовал:

angle = Double(15 * floorf((sender.value/30) + 0.5))
sender.setValue(Float(angle), animated: true)

, который увеличивает мой ползунок на 15, но затем ползунок застревает на 30. Я не могу увеличить значение, но могу уменьшить его. На этом этапе VoiceOver продолжает говорить, что значение тоже 30.

Я не получил никаких сбоев или сообщений об ошибках. Остальная часть моего приложения все еще работает.

Ответы [ 2 ]

0 голосов
/ 25 июня 2019

Решено с помощью товарища по команде :)!Закрытие.

@IBAction func angleSliderChanged(_ sender: UISlider) {
        let roundingNumber: Float = (interval/2.0)
        angle = Double(sender.value)
        sender.accessibilityValue = "\(Int(angle)) degrees"

    sender.setValue(interval*floorf(((sender.value+roundingNumber)/interval)), animated:false)
    }
0 голосов
/ 24 июня 2019

Возможно, я неправильно понял ваш вопрос, но как насчет slider.value = slider.value + 15.0?Или slider.setValue(slider.value + 15.0, animated: true), если вы хотите анимировать.

Это был бы самый простой способ увеличить значение ползунка на 15.

...