UIPageViewController кнопки пролистывания блока - PullRequest
0 голосов
/ 11 июля 2019

У меня есть несколько кнопок UIB на контроллере UIPageView для переворачивания страницы.

Если я пытаюсь переключать страницы, проводя пальцем, когда мое первоначальное касание приземляется на одну из кнопок, кнопка блокирует представление прокрутки от получения жеста, по существу предотвращая прокрутку страницы.

В любом случае можно ли нажимать на кнопки, а также прокручивать вид прокрутки за ним, если его проводить?

Спасибо!

Ответы [ 2 ]

0 голосов
/ 11 июля 2019

Это может сработать для вас ...

  • Добавить кнопку как подпредставление прокрутки
  • установить класс просмотра прокрутки на PassTouchScrollView
  • ограничить верхнюю часть кнопки верхней частью вида прокрутки с константой для вертикального размещения в нужном месте
  • сохранить исходную константу и обновить ее, когда прокручивается представление прокрутки, чтобы сохранить кнопку в ее исходном y-положении

Вот пример. Настройте вид прокрутки и его подпредставления контента, как обычно. Добавьте свою кнопку в качестве подпредставления и ограничьте ее верхней частью вида прокрутки (а не ближайшим соседом). Установите класс представления прокрутки на PassTouchScrollView и подключите его через @IBOutlet. Подключите верхнее ограничение через @IBOutlet. Наконец, подключите кнопку touchUpInside к @IBAction.

class PassTouchScrollView: UIScrollView {

    override func touchesShouldCancel(in view: UIView) -> Bool {
        if type(of: view) == UIButton.self {
            return true
        }

        return super.touchesShouldCancel(in: view)

    }

}

class PassThroughTestViewController: UIViewController, UIScrollViewDelegate {

    @IBOutlet var theScrollView: PassTouchScrollView!

    // constraint from top of button to top of scroll view
    @IBOutlet var theButtonTopConstraint: NSLayoutConstraint!

    var origTop: CGFloat = CGFloat(0)

    override func viewDidLoad() {
        super.viewDidLoad()

        theScrollView.delegate = self

        // save the original top constraint constant
        origTop = theButtonTopConstraint.constant
    }

    func scrollViewDidScroll(_ scrollView: UIScrollView) {
        // when scrolling, update the top constraint to keep the button in-place
        theButtonTopConstraint.constant = origTop + scrollView.contentOffset.y
    }

    @IBAction func didTap(_ sender: Any) {
        print("tapped")
    }

}
0 голосов
/ 11 июля 2019

Как насчет использования вида или изображения, а затем установить их с помощью распознавателя жестов касания?

...