Подтвердить что ты не робот

Поведение UISlider в iOS7 и iOS6

Я заметил, что UISlider в iOS7 ведет себя иначе, чем в iOS 6 и iOS 5:

Предположим, что у вас есть ползунок с min = 0 и max = 10, текущее значение равно 0. Когда вы впервые касаетесь "ручки", сообщение ValueChanged отправляется с помощью slider.value = 0.269 (вместо ожидаемого 0) и ручка движется к середине. Как правило, прикосновение к ползунку перемещает его к среднему значению (5 в этом примере), чем дальше от середины в данный момент, тем больше он перемещается.

Все это не происходило в iOS6, и я хотел бы восстановить старое поведение, но понятия не имею, как этого добиться.

4b9b3361

Ответ 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 (в режиме совместимости) ошибка не возникает. Поэтому кажется, что он связан с новым взглядом.

Файл с ошибкой.