Мне нужно добавить UIPageViewController внутри UIScrollView.
Моя иерархия представлений UIVIewController (UIView)> UIScrollVIew> UIVIew (ContentView)
И внутри этого я программно добавил свой UIPageViewController.
UIPageViewController загружен идеально, как и ожидалось. Scrollview также прокручивает. Но его жесты страницы были отключены, я думаю, scrollview.
В основном мне нужен UIPageView внутри scrollview. Я хочу, чтобы вид прокрутки прокручивался только по вертикали. А горизонтальные пролистывания должны работать только для контроллера uipageview при смене страницы. В основном, как приложение для чтения книг в ландшафтном режиме. Я также использую этот экран для работы только в альбомной ориентации.
Вот мой код
class QuranLandController: UIViewController {
@IBOutlet weak var quranContainer: UIView!
@IBOutlet weak var scrollView: UIScrollView!
// UIPageViewController
let controller = QuranPagerController()
let imgWidth = 2048.0
let imgHeight = 2732.0
override func viewDidLoad() {
super.viewDidLoad()
let h = CGFloat((imgHeight/imgWidth) * Double(self.view.frame.width))
// quranContainer.frame = CGRect(x: 0, y: 0, width: self.view.frame.width, height: h)
addChildViewController(controller)
controller.view.translatesAutoresizingMaskIntoConstraints = false
controller.didMove(toParentViewController: self)
// Translator().defaultTranslation()
for recognizer in controller.gestureRecognizers {
if recognizer is UITapGestureRecognizer {
recognizer.isEnabled = false
}
}
scrollView.canCancelContentTouches = false
scrollView.delaysContentTouches = false
scrollView.isUserInteractionEnabled = true
scrollView.isExclusiveTouch = true
scrollView.isDirectionalLockEnabled = true
// scrollView.isScrollEnabled = false
}
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
let h = CGFloat((imgHeight/imgWidth) * Double(self.view.frame.width))
quranContainer.layout(controller.view)
.width().top().left().right().height(h)
scrollView.contentSize = CGSize(width: self.view.frame.width, height: h)
}
override var supportedInterfaceOrientations: UIInterfaceOrientationMask {
return .landscapeRight
}
override var shouldAutorotate: Bool {
return true
}
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
}
/*
// MARK: - Navigation
// In a storyboard-based application, you will often want to do a little preparation before navigation
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
// Get the new view controller using segue.destination.
// Pass the selected object to the new view controller.
}
*/
}