私はTableViewsの操作方法を学んでいますが、tableViewが上下にスクロールしているかどうかをどのように把握できますか?私はこのようなさまざまなことを試してみましたが、以下がスクロールビュー用であり、TableViewがあることを認めても機能しませんでした。私はこれが初めてなので、提案は素晴らしいでしょう...
func scrollViewWillBeginDragging(_ scrollView: UIScrollView) {
if scrollView.panGestureRecognizer.translation(in: scrollView).y < 0 {
print("down")
} else {
print("up")
}
}
これは私がtableViewコードに持っているものです
func tableView(_ tableView:UITableView, numberOfRowsInSection section:Int) -> Int {
return Locations.count
}
func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) {
if indexPath.row == self.Posts.count - 4 {
reloadTable(latmin: self.latmin,latmax: self.latmax,lonmin: self.lonmin,lonmax: self.lonmax,my_id: myID)
print("Load More")
}
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "HomePageTVC", for: indexPath) as! NewCell
cell.post.text = Posts[indexPath.row]
cell.fullname.setTitle(FullName[indexPath.row],for: UIControlState.normal)
return cell
}
scrollViewWillEndDragging
メソッドを実装できます:
func scrollViewWillEndDragging(_ scrollView: UIScrollView, withVelocity velocity: CGPoint, targetContentOffset: UnsafeMutablePointer<CGPoint>) {
if targetContentOffset.pointee.y < scrollView.contentOffset.y {
// it's going up
} else {
// it's going down
}
}
最初に、最後のオフセットと現在のオフセットの2つのプロパティを作成する必要があります
var lastOffset = CGFloat()
var currentOffset = CGFloat()
次に、Scrollview VCでscrollViewWillBeginDraggingを呼び出して現在のオフセットを取得します
override func scrollViewWillBeginDragging(_ scrollView: UIScrollView) {
self.lastOffset = scrollView.contentOffset.y
}
最後のオフセットを取得するためのscrollViewWillBeginDecelerating
override func scrollViewWillBeginDecelerating(_ scrollView: UIScrollView) {
self.lastOffset = scrollView.contentOffset.y
viewStatus(scrollView: scrollView)
}
この2つの変数を使用すると、スクロールビューWを知ることができます
let isScrollUp = scrollView.contentOffset.y > self.lastOffset
let isScrollDown = scrollView.contentOffset.y < self.lastOffset