События 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, потому что я не мог ее найти.
Ответы
Ответ 1
Из Apple UIControlEvents
для UIControlEvents
:
-
UIControlEventTouchCancel
Системное событие, отменяющее текущие касания для элемента управления.
-
UIControlEventTouchDown
Событие касания в элементе управления.
-
UIControlEventTouchDownRepeat
Повторное касание в элементе управления; для этого события значение метода tapCount UITouch больше единицы.
-
UIControlEventTouchDragEnter
Событие, когда палец перетаскивается в пределы элемента управления.
-
UIControlEventTouchDragExit
Событие, когда палец перетаскивается изнутри элемента управления за его пределы.
-
UIControlEventTouchDragInside
Событие, когда палец перетаскивается за пределы элемента управления.
-
UIControlEventTouchDragOutside
Событие, когда палец перетаскивается за пределы элемента управления.
-
UIControlEventTouchUpInside
Событие касания в элементе управления, когда палец находится в пределах элемента управления.
-
UIControlEventTouchUpOutside
Событие касания в элементе управления, когда палец находится за пределами элемента управления.
Ответ 2
Перечислен, как я считаю, порядок общего использования/вероятность появления для нормальной кнопки:
UIControlEventTouchDown: пользователь нажал кнопку. Это срабатывает при контакте пальца/стилуса.
UIControlEventTouchUpInside: пользователь нажал кнопку. Это срабатывает от контакта пальца/стилуса, отведенного назад от экрана.
Полезно для ползунков и перетаскивания событий, таких как перемещение компонента. Ниже приведены в порядке появления:
UIControlEventTouchDragInside: срабатывает при перетаскивании пальца в область кнопок.
UIControlEventTouchDragExit: срабатывает во время движения перетаскивания. Он вызывается только один раз, поскольку палец/стилус пользователя выходит за пределы кнопки.
UIControlEventTouchDragOutside: Срабатывает во время движения перетаскивания после 'UIControlEventTouchDragExit' и вызывается непрерывно, пока продолжается исходное касание.
UIControlEventTouchUpOutside: Это просто нажатие пальца/стилуса, НО только если палец/стилус больше не находится в пределах кнопки. Важная вещь (и, вероятно, очевидно), которую нужно вызвать, заключается в том, что касание должно было быть внутри кнопки в какой-то момент, чтобы связать это событие с кнопкой.
Примечание: я понимаю, что вышеизложенное может быть полезно для:
- Ползунки: как и следовало ожидать, касание могло быть преднамеренным, но из-за быстрого действия пальца движение их пальцев может быть неаккуратным и подниматься за пределы области ползунка.
- Перемещение компонентов, например, когда вы перемещаете объекты по экрану, вы хотите, чтобы движение происходило, когда палец/стилус касается границы компонента/объекта.
Другие события:
UIControlEventTouchCancel: что-то из пользовательского элемента управления отменяет действие касания. Думайте об этом как о чем-то "не так" на стороне телефона.
UIControlEventTouchDownRepeat: Хотите определить, когда ваш пользователь злится и неистово нажимает кнопку? Хотите определить, находятся ли они в режиме Windows и пытаются "дважды щелкнуть"? Или, может быть, вы разработали кнопку, чтобы сделать что-то другое, если они нажимают дважды. Это событие помогает со всем этим!
Рекомендации:
SO 1: разница между UIControlEventTouchDragOutside и UIControlEventTouchDragExit
SO 2: Что такое UIControlEventTouchCancel?