gpt4 book ai didi

ios - 我的 pageviewcontroller 手势是否被拦截?

转载 作者:行者123 更新时间:2023-11-29 05:50:32 26 4
gpt4 key购买 nike

我按照 pageviewcontroller 教程来创建图像 slider 。然后我将其调整为插入到 tableviewcell 中,因为我想要在表格中添加图像 slider 。

我喜欢在全屏模式下使用相同的代码或嵌入到另一个 View 中的想法。

但是,当我这样做时,滑动时 pageviewafter 和 pageviewbefore 事件不会触发。我怀疑 tableviewcontroller 或 cell 正在吞噬事件,因此 pageviewcontroller 没有接收它们。

我充其量只是一名兼职 ios 开发人员,因此寻找任何可以检查/克服我的问题的建议。

根据要求提供一些代码详细信息。我在检索图像的回调完成后添加 PageViewController。 plantPhotoContainerView 是静态单元格内的 UIView,是随 Storyboard添加的。

self.plantPhotoContainerView.addSubview(vc.view)

pageviewcontroller 将委托(delegate)设置为自身,我当前忽略 Controller 中传递的图像,仅使用一些测试图像:

class ImageSliderViewController: UIPageViewController, UIPageViewControllerDataSource {
init(images: [String]) {
super.init(transitionStyle: UIPageViewController.TransitionStyle.scroll, navigationOrientation: UIPageViewController.NavigationOrientation.horizontal, options: nil)
}

required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}

var images = ["Growers", "Home", "Media"]

override func viewDidLoad() {
super.viewDidLoad()

dataSource = self

view.backgroundColor = UIColor.yellow

let imageViewController = ImageViewController()
imageViewController.imageName = images.first
let viewControllers = [imageViewController]

setViewControllers(viewControllers, direction: .forward, animated: true, completion: nil)
}

override func viewDidLayoutSubviews() {
self.view.translatesAutoresizingMaskIntoConstraints = false
view.leftAnchor.constraint(equalTo: view.superview!.leftAnchor).isActive = true
view.rightAnchor.constraint(equalTo: view.superview!.rightAnchor).isActive = true
view.topAnchor.constraint(equalTo: view.superview!.topAnchor).isActive = true
view.bottomAnchor.constraint(equalTo: view.superview!.bottomAnchor).isActive = true
}

func pageViewController(_ pageViewController: UIPageViewController, viewControllerAfter viewController: UIViewController) -> UIViewController? {
let currentImageName = (viewController as! ImageViewController).imageName!
let currentIndex = images.firstIndex(of: currentImageName)!

if currentIndex < images.count - 1 {
let imageViewController = ImageViewController()
imageViewController.imageName = images[currentIndex + 1]

return imageViewController
}

return nil
}

func pageViewController(_ pageViewController: UIPageViewController, viewControllerBefore viewController: UIViewController) -> UIViewController? {
let currentImageName = (viewController as! ImageViewController).imageName!
let currentIndex = images.firstIndex(of: currentImageName)!

if currentIndex > 0 {
let imageViewController = ImageViewController()
imageViewController.imageName = images[currentIndex - 1]

return imageViewController
}

return nil
}
}

最佳答案

好吧,我最终找到了一篇有帮助的帖子。添加 subview 时,需要两行额外的线才能将默认手势功能传递到 pageviewcontroller。希望这对其他人有帮助。

self.addChild(vc)
self.plantPhotoContainerView.addSubview(vc.view)
vc.didMove(toParent: self)

说实话,我不太明白这是做什么的,也许更熟悉 swift 框架的人可以详细说明。

关于ios - 我的 pageviewcontroller 手势是否被拦截?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55717801/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com