[英]iOS Unable to Disable Horizontal Scrolling when swipe the screen in scrollView?
在我的应用程序中,我必须实现ScrollView和页面控件,同时使用ScrollView进行垂直滚动和水平滚动。 当我用水平滚动拖动屏幕时,它工作正常,但是当我用垂直滚动拖动屏幕时,它存在一些故障,例如(垂直和水平滚动)无法停止或找不到问题。
因此,我决定在页面控件中放置两个分别称为下一个和上一个的按钮,用于下一页和上一页的水平滚动,因此我想在拖动屏幕时停止水平滚动,但是我不知道如何停止水平滚动(不是垂直滚动) )。
在这里,我发布了用于滚动页面控制以及“下一步”和“上一步”按钮动作的代码。
我已经声明并调用了ScrollView委托。
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
值设置zero
将阻止滚动视图在水平方向滚动。
func scrollViewDidScroll(_ scrollView: UIScrollView) {
sender.contentOffset.x = 0.0
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.