Поведение UISlider в iOS7 и iOS6
Я заметил, что UISlider в iOS7 ведет себя иначе, чем в iOS 6 и iOS 5:
Предположим, что у вас есть ползунок с min = 0 и max = 10, текущее значение равно 0. Когда вы впервые касаетесь "ручки", сообщение ValueChanged отправляется с помощью slider.value = 0.269 (вместо ожидаемого 0) и ручка движется к середине. Как правило, прикосновение к ползунку перемещает его к среднему значению (5 в этом примере), чем дальше от середины в данный момент, тем больше он перемещается.
Все это не происходило в iOS6, и я хотел бы восстановить старое поведение, но понятия не имею, как этого добиться.
Ответы
Ответ 1
Apple еще не прокомментировала мой отчет об ошибке, но я нашел решение более или менее случайно: установка пользовательского образа для ручка восстанавливает поведение от iOS 6:
[self.slider setThumbImage:[UIImage imageNamed:@"knob"] forState:UIControlStateNormal];
Ответ 2
На iOS 9 вам нужно установить для .Normal,.Selected и .Highlighted состояния для работы. Я нашел это после 5 часов борьбы. Путь к Apple!
[_sliderView setThumbImage:[UIImage imageNamed:@"knob"] forState:UIControlStateNormal];
[_sliderView setThumbImage:[UIImage imageNamed:@"knob"] forState:UIControlStateSelected];
[_sliderView setThumbImage:[UIImage imageNamed:@"knob"] forState:UIControlStateHighlighted];
Ответ 3
Я тестировал его и могу подтвердить описанное поведение.
Интересно, что когда приложение построено с использованием SDK iOS 6, но устройство/симулятор все еще запускает iOS 7 (в режиме совместимости) ошибка не возникает. Поэтому кажется, что он связан с новым взглядом.
Файл с ошибкой.