gpt4 book ai didi

ios - 在按下向上/向下按钮时平滑地向上和向下移动 ScrollView 。 objective-c

转载 作者:行者123 更新时间:2023-11-29 13:51:48 25 4
gpt4 key购买 nike

我想实现一个在按下按钮时上下滚动的 UIScrollView。我想要的是 ScrollView 在按下按钮时(处于按下状态)保持平滑滚动。当我离开按钮时,滚动应该停止。我怎样才能实现这个功能?我还附上了我的 View 的屏幕截图,其中包含 ScrollView 和向上/向下箭头按钮。

注意:我想要的是,每当用户按下按钮并继续按住他的手指时, ScrollView 就会继续滚动(除非它到达底端)。当他的手指离开按钮时,滚动应该会停止。有没有办法实现这样的功能?

enter image description here

最佳答案

contentOffset 就是你想要的。 UIScrollView 有这样的属性(当然还有它的子类,UITableViewUICollectionView)。

这里有点棘手的是如何在用户按住按钮时启动按钮。为此,您需要一个长按手势识别器和一个计时器。请参阅:Press-and-hold button for "repeat fire"

import UIKit

class ViewController: UITableViewController {

var timer: Timer?

@IBAction func longPressUp(_ sender: UILongPressGestureRecognizer) {
if sender.state == .began {
self.timer = Timer.scheduledTimer(timeInterval: 0.1, target: self, selector: #selector(self.up(_:)), userInfo: nil, repeats: true)
} else if sender.state == .cancelled || sender.state == .ended {
print("CANCELED!")
self.timer?.invalidate()
self.timer = nil
}
}

@IBAction func longPressDown(_ sender: UILongPressGestureRecognizer) {
if sender.state == .began {
self.timer = Timer.scheduledTimer(timeInterval: 0.1, target: self, selector: #selector(self.down(_:)), userInfo: nil, repeats: true)
} else if sender.state == .cancelled || sender.state == .ended {
print("CANCELED!")
self.timer?.invalidate()
self.timer = nil
}
}

@IBAction func up(_ sender: Any) {
print("UP!")
let desiredOffset = CGPoint(x: 0, y: self.tableView.contentOffset.y + 50)
self.tableView.setContentOffset(desiredOffset, animated: true)
}

@IBAction func down(_ sender: Any) {
let desiredOffset = CGPoint(x: 0, y: self.tableView.contentOffset.y - 50)
self.tableView.setContentOffset(desiredOffset, animated: true)
}
}

enter image description here

关于ios - 在按下向上/向下按钮时平滑地向上和向下移动 ScrollView 。 objective-c ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59318094/

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