【问题标题】:scrollViewDidScroll delegate is invoking automaticallyscrollViewDidScroll 委托正在自动调用
【发布时间】:2012-07-24 06:11:28
【问题描述】:

我在我的应用程序中使用 scrollViewDidScroll 委托。

但是,很多时候,即使我开始滚动,这个委托也会被调用,这会产生很多问题。我听说即使设置了特定滚动视图的 contentSize,那时也会调用这个委托,即scrollViewDidScroll

调用此委托的不同场景是什么。有哪些步骤可以控制?

我可以设置任何参数来处理这个吗?

【问题讨论】:

    标签: iphone ios xcode uiscrollview uiscrollviewdelegate


    【解决方案1】:

    大家好,这是一个非常古老的问题,但是,如果您想知道 scrollDidScroll 是手动触发(通过手指)还是由于其他事件(如 didSelectsetContentOffset),请使用 UIScrollView.isTracking 属性。

    【讨论】:

      【解决方案2】:

      为了防止scrollDidScroll: 在视图加载和调整时自动触发,我等待添加我的UIScrollView delegate 直到使用viewDidLayoutSubviews 加载所有视图之后。它对我来说效果很好。

      - (void)viewDidLayoutSubviews {
          // add table view delegate after the views have been laid out to prevent scrollViewDidScroll
          // from firing automaticly when the view is adjusted on load, which makes the tab bar disappear 
          self.tableView.delegate = self;
      } 
      

      【讨论】:

        【解决方案3】:

        在此方法中设置 UICollectionView、UITableView 委托

        override func viewDidLayoutSubviews() {
             super.viewDidLayoutSubviews()
             // This method is called only after all subviews are laid
        }
        

        【讨论】:

          【解决方案4】:

          scrollViewDidScroll 也会在方向改变时被调用。这是我从here 得知的。这是我面临的问题。现在我的问题通过this post 解决了。

          【讨论】:

            【解决方案5】:

            relevant

            scrollViewDidScroll:每次滚动边界更改时都会调用。 这意味着它在滚动期间被调用,以及当它 开始。你可能想试试 scrollViewWillBeginDragging: 。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多