iOS: могу ли я программно решить, с каким компонентом взаимодействовать (прокруткой)? - PullRequest
0 голосов
/ 07 октября 2019

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

Спасибо за помощь.

Ответы [ 2 ]

1 голос
/ 07 октября 2019

Вы можете использовать scrollViewWillBeginDragging из UIScrollViewDelegate, чтобы получить направление, в котором будет двигаться ваша прокрутка.

func scrollViewWillBeginDragging(_ scrollView: UIScrollView) {
    let translation = scrollView.panGestureRecognizer.translation(in: scrollView.superview)
    if translation.y > 0 {
        // swipes from top to bottom of screen -> down
    } else {
        // swipes from bottom to top of screen -> up
    }
}

Но так как этот метод не возвращает представление прокрутки, вы будете знать только какиесвиток был перетащен и в каком направлении.

1 голос
/ 07 октября 2019

Пожалуйста, посмотрите, поможет ли isDirectionalLockEnabled . Это помогает заблокировать направление прокрутки.

Если это свойство имеет значение YES и пользователь начинает перетаскивать в одном общем направлении (по горизонтали или вертикали), представление прокрутки отключает прокрутку в другом направлении. Если направление перетаскивания диагонально, прокрутка не будет заблокирована, и пользователь может перетаскивать в любом направлении, пока перетаскивание не завершится.

...