Je souhaite désactiver mon scrollview rebond lorsque je fais défiler vers le bas.

enter image description here

Lorsque je désactive le rebond verticalement, je ne peux pas refresh ma table. Une suggestion comment désactiver le rebond, mais activer la table d'actualisation?

Je rafraîchis de cette façon:

self.refreshControl = UIRefreshControl()
    self.refreshControl.addTarget(self, action: "refresh:", forControlEvents: UIControlEvents.ValueChanged)
    self.tableView.addSubview(refreshControl)

func refresh(sender:AnyObject) {
    getJson()
    self.tableView.reloadData()
    self.refreshControl.endRefreshing()
}

Merci.

3
aaisataev 23 déc. 2015 à 14:36

2 réponses

Meilleure réponse

Je l'ai juste fait de cette façon:

func scrollViewDidScroll(scrollView: UIScrollView) {

    if scrollView.contentOffset.y < 0.0 {
        return
    }

    if (scrollView.contentOffset.y >= scrollView.contentSize.height - scrollView.frame.size.height) {
        scrollView.setContentOffset(CGPointMake(scrollView.contentOffset.x, scrollView.contentSize.height - scrollView.frame.size.height), animated: false)
    }
}
6
aaisataev 23 déc. 2015 à 11:50

Implémentez la méthode scrollViewDidScroll dans le UIScrollViewDelegate

  extension ViewController: UIScrollViewDelegate {
      func scrollViewDidScroll(_ scrollView: UIScrollView) {
          if scrollView.contentOffset.y > 0 {
              scrollView.setContentOffset(CGPoint(x: scrollView.contentOffset.x, y: 0), animated: false)
          }
      }
    }

Cela permet à la vue de la table de tirer pour s'actualiser, mais restreint l'extraction vers le haut. Cela supprime le rebond vers le haut.

Effet secondaire: cela ne vous permettra pas d'aller au-delà des cellules déjà affichées, vous ne pouvez donc pas faire défiler vers les cellules non visibles.

0
craft 28 janv. 2020 à 23:30