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

События UIButton. Какая разница?

Я столкнулся с проблемой, когда моя кнопка должна оставаться "нажатой", пока на ней отобразится popover. Popover - это селектор для фильтра, и фильтр отображается на самой кнопке. Когда я нажимаю на него, и он показывает popover, он становится не выбранным независимо от того, что.

Я думаю, что мне нужно переопределить его поведение на сенсорном событии и заставить его отвечать не стандартно touch up inside. Тогда я задавался вопросом, за что отвечают другие события? Но я не смог найти список событий в iOS-библиотеке, а в StackOverflow - только вопросы о некорректном поведении touch up inside или touch down.

Итак, какая разница между событиями касания?

  • touch cancel - при нажатии кнопки, но отпустите палец и он не отменен?
  • Прикоснитесь вниз - прямо при нажатии.
  • Прикосновение вниз повторить??
  • touch drag enter
  • контакт перетаскивания
  • перетащить татуировку внутри?
  • касание перетащить наружу???
  • коснитесь внутри - когда вы нажимаете и отпускаете кнопку, оставшуюся в ней . Он изменяет состояние UIButtons на Normal.
  • коснитесь наружу - когда вы нажимаете и отпускаете кнопку, оставляя ее границы?

другие IBActions не отправляются UIButton, правильно? Также как эти события меняют внешний вид UIButton? Как highlighted или selected?

Я был бы признателен за ссылку на хорошую статью о IBActions, потому что я не мог ее найти.

4b9b3361

Ответ 1

Из Apple UIControlEvents для UIControlEvents:

  1. UIControlEventTouchCancel

    Системное событие, отменяющее текущие касания для элемента управления.

  2. UIControlEventTouchDown

    Событие касания в элементе управления.

  3. UIControlEventTouchDownRepeat

    Повторное касание в элементе управления; для этого события значение метода tapCount UITouch больше единицы.

  4. UIControlEventTouchDragEnter

    Событие, когда палец перетаскивается в пределы элемента управления.

  5. UIControlEventTouchDragExit

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

  6. UIControlEventTouchDragInside

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

  7. UIControlEventTouchDragOutside

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

  8. UIControlEventTouchUpInside

    Событие касания в элементе управления, когда палец находится в пределах элемента управления.

  9. UIControlEventTouchUpOutside

    Событие касания в элементе управления, когда палец находится за пределами элемента управления.

Ответ 2

Перечислен, как я считаю, порядок общего использования/вероятность появления для нормальной кнопки:

UIControlEventTouchDown: пользователь нажал кнопку. Это срабатывает при контакте пальца/стилуса.

UIControlEventTouchUpInside: пользователь нажал кнопку. Это срабатывает от контакта пальца/стилуса, отведенного назад от экрана.


Полезно для ползунков и перетаскивания событий, таких как перемещение компонента. Ниже приведены в порядке появления:

UIControlEventTouchDragInside: срабатывает при перетаскивании пальца в область кнопок.

UIControlEventTouchDragExit: срабатывает во время движения перетаскивания. Он вызывается только один раз, поскольку палец/стилус пользователя выходит за пределы кнопки.

UIControlEventTouchDragOutside: Срабатывает во время движения перетаскивания после 'UIControlEventTouchDragExit' и вызывается непрерывно, пока продолжается исходное касание.

UIControlEventTouchUpOutside: Это просто нажатие пальца/стилуса, НО только если палец/стилус больше не находится в пределах кнопки. Важная вещь (и, вероятно, очевидно), которую нужно вызвать, заключается в том, что касание должно было быть внутри кнопки в какой-то момент, чтобы связать это событие с кнопкой.

Примечание: я понимаю, что вышеизложенное может быть полезно для:

  1. Ползунки: как и следовало ожидать, касание могло быть преднамеренным, но из-за быстрого действия пальца движение их пальцев может быть неаккуратным и подниматься за пределы области ползунка.
  2. Перемещение компонентов, например, когда вы перемещаете объекты по экрану, вы хотите, чтобы движение происходило, когда палец/стилус касается границы компонента/объекта.

Другие события:

UIControlEventTouchCancel: что-то из пользовательского элемента управления отменяет действие касания. Думайте об этом как о чем-то "не так" на стороне телефона.

UIControlEventTouchDownRepeat: Хотите определить, когда ваш пользователь злится и неистово нажимает кнопку? Хотите определить, находятся ли они в режиме Windows и пытаются "дважды щелкнуть"? Или, может быть, вы разработали кнопку, чтобы сделать что-то другое, если они нажимают дважды. Это событие помогает со всем этим!


Рекомендации:

SO 1: разница между UIControlEventTouchDragOutside и UIControlEventTouchDragExit

SO 2: Что такое UIControlEventTouchCancel?