gpt4 book ai didi

ios - 无法在 Swift 中观察 UIPageControl 的 currentPage 变化

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

我有一个 UIPageControl 的子类,我想观察 currentPage 中的变化.

不幸的是,当 currentPage 因点击 MyPageControl 而发生变化时,我的 currentPagedidSet 没有被调用。

class MyPageControl: UIPageControl {
override var currentPage: Int {
didSet {
// not called when `currentPage` is changed from a tap
updateSomething(for: currentPage)
}
}
}

并且使用 KVO 也无法观察到变化:

class MyPageControl: UIPageControl {
var observation: NSKeyValueObservation?
override func awakeFromNib() {
super.awakeFromNib()
observation = observe(\.currentPage) { (_, _) in
// not called when `currentPage` is changed from a tap
updateSomething(for: self.currentPage)
}
}
}

最佳答案

来自 Apple 文档:Apple Doc

当用户点击页面控件移动到下一页或上一页时,该控件将发送 valueChanged 事件以供委托(delegate)处理。然后委托(delegate)可以评估 currentPage 属性以确定要显示的页面。页面控件在任一方向上只前进一页。当前查看的页面用白点表示。根据设备的不同,一定数量的点在被剪裁之前会显示在屏幕上。

代码:

pageControl.addTarget(self, action:#selector(pageControlTapHandler(sender:)), for: .touchUpInside)

//or

pageControl.addTarget(self, action:#selector(pageControlTapHandler(sender:)), for: .valueChanged)



...

func pageControlTapHandler(sender:UIPageControl) {
print("currentPage:", sender.currentPage) //currentPage: 1
}

关于ios - 无法在 Swift 中观察 UIPageControl 的 currentPage 变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56292012/

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