在我的应用程序中,我必须实现 ScrollView 和页面控制,我使用 ScrollView 进行垂直滚动和水平滚动。当我使用水平滚动拖动屏幕时意味着它工作正常,但是当我使用垂直滚动拖动屏幕时意味着它有一些故障,例如(垂直和水平滚动)无法停止或无法找到问题。
所以我决定在页面控件中放置两个名为下一个和上一个的按钮,用于水平滚动下一页和上一页,所以我想在拖动屏幕时停止水平滚动,但我不知道如何停止水平滚动(不是垂直滚动)。
这里我发布了页面控制中的滚动以及下一个和上一个按钮操作的代码。
我已经声明并调用了 ScrollView 委托(delegate)。
UIScrollViewDelegate
override func viewDidLoad() {
super.viewDidLoad()
configurePageControl()
scrollMainHolderView.delegate = self
scrollMainHolderView.isPagingEnabled = true
}
ScrollView方法是:
//MARK:- Scrollview delegate -
func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) {
let pageNumber = round(scrollView.contentOffset.x / scrollView.frame.size.width)
pageControlNew.currentPage = Int(pageNumber)
self.scrollMainHolderView.contentSize=CGSize(width: self.view.frame.size.width * CGFloat(templateMutArray.count), height: CGFloat((globalYarr[Int(pageNumber)] as? CGFloat)!))
}
设置页面控件的代码,
func configurePageControl() {
self.pageControlNew.numberOfPages = templateMutArray.count
self.pageControlNew.currentPage = 0
self.pageControlNew.tintColor = UIColor.red
self.pageControlNew.pageIndicatorTintColor = UIColor.black
self.pageControlNew.currentPageIndicatorTintColor = UIColor.green
}
下一个和上一个按钮操作的代码是,
@IBAction func pagePreviousBtnTapped(_ sender: Any) {
isHorizontalSCrolling = true
scrollMainHolderView.delegate = self
let scrollBounds = self.scrollMainHolderView.bounds
let contentOffset = CGFloat(floor(self.scrollMainHolderView.contentOffset.x - scrollBounds.size.width))
self.movScrollToFrame(contentOffset: contentOffset)
}
@IBAction func pageNextBtnTapped(_ sender: Any) {
isHorizontalSCrolling = true
scrollMainHolderView.delegate = self
let scrollBounds = self.scrollMainHolderView.bounds
let contentOffset = CGFloat(floor(self.scrollMainHolderView.contentOffset.x + scrollBounds.size.width))
self.movScrollToFrame(contentOffset: contentOffset)
}
最佳答案
据我从评论中了解到,您想停止水平滚动。这实际上非常简单。
您可以在 ScrollViewDelegate
方法中停止水平滚动或垂直滚动。方法如下,
将contentOffset.x
值设置为零
将阻止scrollview在水平方向滚动。
func scrollViewDidScroll(_ scrollView: UIScrollView) {
sender.contentOffset.x = 0.0
}
关于iOS 在scrollView中滑动屏幕时无法禁用水平滚动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49322864/