Я хотел бы программно запустить UILongPressGesture
, когда пользователь касается кнопки. Это было задано несколько лет назад на Как я могу программно отправить UILongPressGesture? , но мне интересно, есть ли более чистое или более современное решение.
Мой существующий UILongPressGestureRecognizer
код (который отображает фактические взаимодействия пользователя с функциональностью) работает следующим образом:
view.addGestureRecognizer(UILongPressGestureRecognizer(target: self, action: #selector(longPress)))
, где longPress
определяется как:
@objc func longPress(sender: UILongPressGestureRecognizer) {
switch sender.state {
case .began:
// Display a 'hover' animation for a specific UIView
....
case .changed:
// Move existing hover animation
...
default:
// Complete the hover animation
...
}
}
Желаемая функциональность
Я использую это длинное нажатие, чтобы отобразить эффект зависания для любого, выбранного пользователем UIView
. Я также хочу предоставить кнопку для автоматического запуска длительного нажатия (в обход longPress
, где sender.state == .began
). Мое проецируемое решение - это программное создание длинного нажатия .began
, создание объекта жеста, который пользователи могут перетаскивать по экрану (возможно, даже перевод UILongPressGestureRecognizer
в UIPanGestureRecognizer
, если это возможно), а затем продолжение логики анимации при наведении новый жест.