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