繁体   English   中英

iOS无法在scrollView中滑动屏幕时禁用水平滚动?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM