Двойное нажатие в любом месте нижней части области управления страницей (где точки) приостанавливает переход от одного контроллера представления к другому.UIPageViewController - Область двойного касания показывает частичный переход (Xcode 8, Swift 3)
Пример двойного постукивания:
Я упрощена проект UIPageViewController, чтобы продемонстрировать это:
PageViewController.swift
import UIKit
class PageViewController: UIPageViewController, UIPageViewControllerDataSource, UIPageViewControllerDelegate {
var pages: [UIViewController] = [UIViewController]()
override func viewDidLoad() {
super.viewDidLoad()
dataSource = self
delegate = self
pages.append(UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "Page1"))
pages.append(UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "Page2"))
setViewControllers([pages.first!], direction: .forward, animated: true, completion: nil)
}
// This allows the dots to appear on top of the views
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
for view in self.view.subviews {
if view is UIScrollView {
view.frame = UIScreen.main.bounds
} else if view is UIPageControl {
view.backgroundColor = UIColor.clear
}
}
}
func pageViewController(_ pageViewController: UIPageViewController, viewControllerBefore viewController: UIViewController) -> UIViewController? {
let viewControllerIndex = pages.index(of: viewController)
if viewControllerIndex == 1 {
return pages[0]
}
return nil
}
func pageViewController(_ pageViewController: UIPageViewController, viewControllerAfter viewController: UIViewController) -> UIViewController? {
let viewControllerIndex = pages.index(of: viewController)
if viewControllerIndex == 0 {
return pages[1]
}
return nil
}
func presentationCount(for pageViewController: UIPageViewController) -> Int {
return pages.count
}
func presentationIndex(for pageViewController: UIPageViewController) -> Int {
return 0
}
}
Источник проблемы лежит в этом коде:
// This allows the dots to appear on top of the views
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
for view in self.view.subviews {
if view is UIScrollView {
view.frame = UIScreen.main.bounds
} else if view is UIPageControl {
view.backgroundColor = UIColor.clear
}
}
Когда этот код удаляется не существует частичных переходов, но теперь вы увидите черный бар, что также нежелательно.
Это общее решение, которое я нашел по полотну и Stackoverflow, чтобы получить контроль страницы (точки), чтобы показать, на вершине взглядов, а не в своем собственном баре в нижней части экрана.
Вот и все, что я ищу. Решение, которое:
- Показывает точки на верхней части взглядов (не черный бар)
- Нет проблем с переходом.
Заранее благодарим за любую помощь!
Вместо того, чтобы использовать этот хак сделал попробовать 'pageControl.isUserInteractionEnabled = false' или' pageControl.isEnabled = false' отключить взаимодействие с пользователем для управления страницами. Эта одна строка кода может быть решением для вашего взлома. – Jay