【问题标题】:UIScrollView delegate methods not calling properlyUIScrollView 委托方法没有正确调用
【发布时间】:2013-08-05 13:02:17
【问题描述】:

为了向上和向下滚动,我需要调用两个方法,我使用了下面的方法。我正在为UICollection 使用 scrollview 委托方法,因为它是 @987654322 的子视图@.这是我写的代码,但滚动不容易移动,结果有时也不准确,有人可以建议吗?

- (void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView{
    CGPoint mScrollPosition = [scrollView.panGestureRecognizer velocityInView:mCollectionView];


    if (mScrollPosition.y > 0.0f){
        NSLog(@"going down");
       //Action One
        mYearHeaderTitle--;
        [self.mCollectionView reloadData];

    }
    else if (mScrollPosition.y < 0.0f){
        NSLog(@"going up");
      //Action two
        mYearHeaderTitle++;
        [self.mCollectionView reloadData];
    }
}

【问题讨论】:

  • 你是否将委托链接到 scrollView 之类的,scroll.delegate=self;

标签: iphone ios uicollectionview uiscrollviewdelegate


【解决方案1】:

使用:

  1. - (void)scrollViewDidScroll:(UIScrollView *)scrollView
  2. - (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView

改为:

- (void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView

【讨论】:

    【解决方案2】:

    使用以下方法:

     - (void)scrollViewDidScroll:(UIScrollView *)scrollView
    
     - (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView
    

    通过右键单击滚动视图将委托连接到滚动视图并将委托方法连接到文件所有者 (或)

    scrollview.delegate = self;
    

    【讨论】:

      【解决方案3】:

      您可以尝试将self.scrollView.delegate 设置为应充当scrollView 委托的对象。

      【讨论】:

        【解决方案4】:

        将您的视图控制器设置为&lt;UIScrollViewDelegate&gt;

        【讨论】:

          【解决方案5】:

          **使用这个:**

            //MARK: - UIScrollview Delegate -
          func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) {
              if scrollView.contentOffset.y > 0
              {
                  if (tableView.contentSize.height - (tableView.contentOffset.y + scrollView.bounds.size.height)) == 0
                  {
                      self.count += 1
                      let strCount = String(self.count)
                      let params:[String:String] = ["search":SAFESTRING(str: self.strSearchVal!),"page":strCount,"length":"25"]
                      let url = API_USER.BASE_URL + API_USER.SEARCH_LISTING
                      self.callGetEventlist(url: url, params: params)
                  }
                  else
                  {
          
                  }
              }
          }
          

          //MARK: - Use For Pegination -
          func scrollViewDidScroll(_ scrollView: UIScrollView) {
          
              if (NetworkReachabilityManager()?.isReachable)! {
                  if (((scrollView.contentOffset.y + scrollView.frame.size.height) >= scrollView.contentSize.height ) && !isLoadingList){
                      self.isLoadingList = true
                      currentPage += 1
                      self.getList(page: currentPage)
                  }
              }
          }
          

          【讨论】:

            【解决方案6】:

            在我的例子中,我必须让我的视图同时成为 UITextViewDelegate 和 UIScrollViewDelegate 的代表。在我添加两者之前它不会触发该方法。可能是因为我在 EAGLView 而不是视图控制器中。

            @interface EAGLView : UIView <UITextFieldDelegate, SDWebImageManagerDelegate, UITextViewDelegate, UIScrollViewDelegate>
            

            我也做过:

            alertMessage.delegate = self;
            

            因为 alertMessage 是我用作服务条款滚动条的 TextView。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2018-06-25
              • 1970-01-01
              • 2012-09-26
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2013-12-03
              • 2020-11-14
              相关资源
              最近更新 更多