簡體   English   中英

可以向上滾動幾行的 Swift 表格視圖

[英]Swift table view with few rows can be scrolled up

我有這個表視圖,在某些情況下它包含幾行,甚至一行。 它有什么問題,即使我只有一行,它也允許我向下滾動並且該行隱藏在頂部。

它幾乎從屏幕上消失了,就好像它下面有什么東西要顯示一樣。 我無法禁用滾動,因為我已經下拉刷新。

如果有我缺少的設置,有什么想法嗎? 或者如果我沒有足夠的行來覆蓋整個屏幕,我怎么不允許向下滾動?

實際上,您的情況有點棘手,因為:

第一個我認為解決方案將是myTableView.alwaysBounceVertical = false

這將為您完成這項工作,但是在您有UIRefreshControl()並將alwaysBounceVertical設置為false的情況下,問題將禁用滾動到頂部以顯示 refreshController。

因此,應該手動完成,如下所示:

1-UIScrollViewDelegate實現scrollViewDidScroll方法。

2-檢查其中的滾動方向。

3-如果滾動方向向下,檢查tableView的內容大小是否大於其高度,即檢查tableView是否包含大於其高度的單元格。

4-如果第 3 步的輸出為 false,則禁用滾動,否則啟用滾動。

5-添加dispatch_after以重新啟用 tableView 滾動。

它是這樣的(注意:Swift 2 代碼。 ):

private var lastContentOffset: CGFloat = 0
    // 1
    func scrollViewDidScroll(scrollView: UIScrollView) {
        // 2
        if (self.lastContentOffset > scrollView.contentOffset.y) {
            print("scrolling up")
        }
        else if (self.lastContentOffset < scrollView.contentOffset.y) {
            print("scrolling down")

            // 3 and 4
            myTableView.scrollEnabled = myTableView.contentSize.height > myTableView.frame.size.height ? true : false

            // 5

            // delaying is half a second
            dispatch_after(dispatch_time(DISPATCH_TIME_NOW, Int64(NSEC_PER_MSEC) * 500), dispatch_get_main_queue(), { () -> Void in
                self.myTableView.scrollEnabled = true
            })
        }
    }

希望這對您的情況是一個很好的解決方案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM