2014-01-03 2 views
11

я заметил, что UISlider в iOS7 ведет себя иначе, чем в IOS 6 и прошивкой 5:поведение UISlider в iOS7 против iOS6

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

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

+2

Похоже, мы ничего не можем с этим поделать, кроме [подачи ошибки] (http://bugreport.apple.com/). –

+0

Ошибка подана. Я обновлю это, когда Apple ответит. – Gereon

ответ

16

компании Apple не прокомментировала мой отчет об ошибке, но я нашел решение более или менее случайно: установка пользовательского изображения для ручки восстанавливает поведение с прошивки 6:

[self.slider setThumbImage:[UIImage imageNamed:@"knob"] forState:UIControlStateNormal]; 
+0

Что делать, если я хочу использовать изображение с высоким разрешением по умолчанию? Есть ли какие-либо исправления? Любой ответ от Apple? – user1561346

+0

К сожалению, Apple еще не ответила на мой отчет об ошибке (это 15743419, если вы хотите обмануть его), и я не знаю никаких других исправлений или обходных путей. Сожалею! – Gereon

+0

Это становится еще страннее. Если я установил изображение большого пальца для 'UIControlState.Normal', он начинает отходить от центра на каждом касании, что является абсолютно противоположным поведением? В '.Selected' он работает нормально, не двигаясь никуда. – alkku

2

Я проверил его и могу подтвердить описанное поведение.

Интересно, когда приложение построено с использованием SDK iOS 6, но устройство/симулятор все еще запускает iOS 7 (в режиме совместимости) ошибка не возникает. Кажется, что это связано с новым взглядом.

File a bug.

5

КСН 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]; 
Смежные вопросы