UISlider, большой палец не двигается - PullRequest
2 голосов
/ 12 июля 2010

У меня есть slider в ячейке моей таблицы, вот код инициализации моего слайдера:

UISlider* slider = [[UISlider alloc] init];
slider.continuous = NO;

slider.maximumValue = 2;
slider.minimumValue = 0.5f;
slider.value = 0.5f;

...
//put slider into cell

И я не могу двигать большим пальцем этого слайдера. Зачем? Подскажите пожалуйста, что я делаю не так?

ОБНОВЛЕНИЕ : если установить начальное значение ползунка на 0,500001f - это работает!

Ответы [ 3 ]

1 голос
/ 02 декабря 2010

Я сомневаюсь, что это имеет непосредственное отношение к этому вопросу, но у меня была похожая проблема - мой ползунок мог иметь значение, установленное моей программой, и он мог двигаться, но я не мог перетащить и переместить его. Оказалось, что я кодировал метод trackRectForBounds для моего подкласса слайдера, не понимая, что позиция (x, y) в этом методе относительно UIView, который является слайдером, а не содержащее представление. Поэтому я использовал тот же CGRect для границ дорожек, что и для ползунка в initWithFrame. Это поместит дорожку ползунка за пределы вида ползунка. В результате большой палец ползунка не мог быть перетащен, и любой щелчок в дорожке ИЛИ вид ползунка обрабатывался содержащим представлением.

Если бы мне не удалось придать виду ползунка отчетливый цвет фона, не было бы ясно, что дорожка была за пределами вида, и я не знаю, как бы это решил.

Когда я изменил (x, y) в trackRectForBounds на (0, 0), ИЛИ вообще удалил переопределить trackRectForBounds, все работало отлично.

Может быть, этот пост поможет кому-то еще.

0 голосов
/ 12 марта 2016

Недостаточно кода здесь, чтобы оценить проблему.Но у меня недавно была та же проблема, поэтому я просто говорю вам, в чем моя проблема, и надеюсь, что она помогает.

По сути, я просто разделяю ячейку на разные регионы с разными метками и представлениями.Я обнаружил, что если я добавлю ползунок как подпредставление к объекту UILabel, ползунок не будет двигаться.Поэтому я сначала добавляю UIView в тот же регион, затем добавляю и UILabel, и UIslider в этот UIView.Теперь все работает.

0 голосов
/ 12 июля 2010

Если ваш большой палец не активирует слайдер, скорее всего, потому что над ним есть UIView.Пожалуйста, оставьте свой код для cellForRowAtIndexPath

...