gpt4 book ai didi

swift - 如何在 UiScrollView contentOffset 更改上运行函数?

转载 作者:行者123 更新时间:2023-11-30 10:42:45 24 4
gpt4 key购买 nike

我想在“UIScrollView contentOffset.x”(在每个滚动上)更改上运行一个函数,以便根据我的任务要求动态地进行一些图形更改。

let scroll = UIScrollView.init()
scroll.frame = CGRect(x: 10, y: 10, width: 500, height: 100)
scroll.backgroundColor = .white
scroll.contentSize.width = 1000
scroll.contentSize.height = 100
view.addSubview(scroll)

为此,我想到了两种方法

1)第一种方法(不可用)

喜欢

txtfield.addTarget(self, action: #selector(name_editingchange(_:)), for: UIControlEvents.editingChanged)
"this approach use on textfield "on editingChange""

“addTarget”在 ScrollView 上不起作用,因此我无法使用“UIControlEvents.editingChanged”

2)第二种方法“addGestureRecognizer”(可用)

scroll.scrollview.addGestureRecognizer(UIPanGestureRecognizer(target: self, action: #selector(onscroll)))

@objc func onscroll(_ pan:UIPanGestureRecognizer){
print("on change run func given below")
taskcompleted()
}

当我在 ScrollView 上使用“PanGesture”时,第二种方法存在问题,然后 ScrollView 的滚动能力无法恢复滚动能力,通过平移手势我在其函数中编写了一些代码

@objc func onscroll(_ pan:UIPanGestureRecognizer){  

UIView.animate(withDuration: 0.3) {
self.scroll.contentOffset.x = self.scroll.contentOffset.x - pan.translation(in: self.view).x
pan.setTranslation(CGPoint(x: 0, y: 0), in: self.view)
}

taskcompleted()
}

但它不像原来的滚动功能那样工作。

我想运行

1)- “UIScrollView contentOffset.x”上的 taskcompleted() 函数更改2)-同时完美滚动

我怎样才能同时做到这两点?

最佳答案

使用UIScrollViewDelegatescrollViewDidScroll()

简单的例子:

class TestViewController: UIViewController, UIScrollViewDelegate {

func scrollViewDidScroll(_ scrollView: UIScrollView) {
print(scrollView.contentOffset)
// perform actions as desired based on contentOffset
}

override func viewDidLoad() {
super.viewDidLoad()

let scroll = UIScrollView.init()
scroll.frame = CGRect(x: 10, y: 10, width: 500, height: 100)
scroll.backgroundColor = .white
scroll.contentSize.width = 1000
scroll.contentSize.height = 100
view.addSubview(scroll)

// assign the delegate here
scroll.delegate = self
}
}

关于swift - 如何在 UiScrollView contentOffset 更改上运行函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56442976/

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