gpt4 book ai didi

ios - 水平滚动而不是垂直滚动时更改 ScrollView 页面

转载 作者:行者123 更新时间:2023-11-28 14:49:28 24 4
gpt4 key购买 nike

我有一个包含 2 个 UITableView 的 ScrollView 。换句话说,第 0 页包含 UITableView 0,第 1 页包含 UITableView 1。在 View 的顶部,我有一个分段控件。当用户在页面之间滑动时,突出显示的分段控件会发生变化。 IE。当用户在第 0 页并转到第 1 页时,突出显示的分段控件也从第 0 页变为第 1 页。

我的问题是,当当前页面是“第 1 页”并且我垂直滚动 UITableView 时,我的函数将分段控件索引更改为 0。如果用户在第 1 页并且他们在 UITable 上垂直滚动,我不想更改索引。我已经提供了我的功能来更改下面的分段控制索引。

我已经尝试将 && yOffset == 0 包含到我的 if 语句中,但是它不起作用,因为我相信 Y == 0 有一小段时间。非常感谢任何帮助。

谢谢。

func scrollViewDidScroll(_ scrollView: UIScrollView) {
var previousPage : NSInteger = 0
let pageWidth : CGFloat = scrollView.frame.size.width
let fractionalPage = Float(scrollView.contentOffset.x / pageWidth)
let page = lroundf(fractionalPage)
let yOffset = Float(scrollView.contentOffset.y / pageWidth)

if previousPage != page {
previousPage = page
}

segments.selectedSegmentIndex = previousPage
segments(nil)
}

编辑 - 解决方案:

Dhaval D. 提供的解决方案非常有效。在执行页面更改之前,检查滚动是否由 UITableView 执行。感谢您的帮助!

func scrollViewDidScroll(_ scrollView: UIScrollView) {

// Check whether scrolling is performed by UITableView then ignore page counter related stuff
if scrollView != tableView0 && scrollView != tableView1 {
var previousPage : NSInteger = 0
let pageWidth : CGFloat = scrollView.frame.size.width
let fractionalPage = Float(scrollView.contentOffset.x / pageWidth)
let page = lroundf(fractionalPage)
let yOffset = Float(scrollView.contentOffset.y / pageWidth)

if previousPage != page {
previousPage = page
}

segments.selectedSegmentIndex = previousPage
segments(nil)
}
}

最佳答案

您可以通过在您的 scrollViewDidScroll 中匹配您的 UITableView 对象来做到这一点,如下所示,或者您可以比较您想要的 UIScrollView 对象计算 PageNo 或您想更改段控制以显示当前选择。

func scrollViewDidScroll(_ scrollView: UIScrollView) {

// Check whether scrolling is performed by UITableView then ignore page counter related stuff
if scrollView != tableView0 && scrollView != tableView1 {
var previousPage : NSInteger = 0
let pageWidth : CGFloat = scrollView.frame.size.width
let fractionalPage = Float(scrollView.contentOffset.x / pageWidth)
let page = lroundf(fractionalPage)
let yOffset = Float(scrollView.contentOffset.y / pageWidth)

if previousPage != page {
previousPage = page
}

segments.selectedSegmentIndex = previousPage
segments(nil)
}
}

关于ios - 水平滚动而不是垂直滚动时更改 ScrollView 页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49972177/

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