Как распознать жесты смахивания влево/вправо? Мягче, чем UISwipeGestureRecognizer.direction.right/left

Я пытаюсь реализовать прокрутку, чтобы закрыть просмотры в своем приложении. Я использую UISwipeGestureRecognizer, и при свайпе влево или вправо вид закрывается. Однако UISwipeGestureRecognizer имеет невероятно строгое определение левого или правого — если смахивание не является идеально горизонтальным, оно не распознается. Его неудобно использовать, поскольку большинство пользователей физически не могут каждый раз идеально проводить пальцем по экрану. Есть ли более щадящий способ сделать это?


person Kevin2566    schedule 05.04.2019    source источник


Ответы (1)


Вы можете попробовать использовать UIPanGestureRecognizer

                    let pan = UIPanGestureRecognizer()

                    var initialPoint: CGPoint = .zero

                    switch pan.state {
                    case .began:
                        initialPoint = pan.translation(in: self)
                        break

                    case .changed:
                        let panned = pan.translation(in: self)
                        if panned.x > initialPoint.x {
                            // right
                        } else if panned.x < initialPoint.x {
                            // left
                        }
                        break

                    default:
                        break
                    }
person Jun Xiu Chan    schedule 05.04.2019