Я попытался настроить представление с помощью жеста длительного нажатия и степпера, настроенного на непрерывные обновления. При длительном нажатии непрерывная функция степпера не возникает. На данный момент я отключил долгое нажатие. Думаю, мне это не нужно. Но для справки в будущем, как я могу позволить им сосуществовать?
Просто для ясности, вот как был настроен экран, когда я пробовал это.
- Приложение было настроено с помощью простого контроллера представления.
- К этому представлению было добавлено подвид (может быть контроллер, но я просто сделал его UIView).
- В это подпредставление были добавлены несколько меток и степпер.
- Степперы были подключены как выходы и действия.
- В основной вид в IB добавлен распознаватель длинных нажатий.
- Для полноты в основной вид в IB также был добавлен жест касания.
Нажатия на функцию основного вида, как и ожидалось. Нажатия на степперы работают как положено. Длительное нажатие на главном экране работает, как и ожидалось. Лонгпресс на степпере не дает.
Я изменил код, вызываемый длительным нажатием, чтобы проверить кадр подпредставления и не действовать, если место касания было внутри этого прямоугольника, но это не имело значения. Я не пытался добиться отказа длинного нажатия в этой ситуации, но, полагаю, я попробую это в следующий раз. РЕДАКТИРОВАТЬ: Хорошо, может быть, нет. Кажется, для этого нет API. Однако есть этот кладж, который я не собираюсь попробовать.
Прилагается снимок экрана из профилировщика с перевернутым деревом вызовов, чтобы вы могли видеть, чем вызывается каждый элемент.
darkStepped:
— это IBAction, который вызывается степпером. Если бы степпер запускался распознавателем жестов, разве я не ожидал бы увидеть распознаватель жестов в дереве вызовов?