2016-07-05 92 views
0

我想獲得一個UIScrollView工作,但我有一些困難。當我嘗試滾動時,屏幕上沒有任何動作。UIScrollView:什麼都不滾動

沒有內容大小不明確性警告,這使我相信我已經正確設置了我的內容大小和約束(我希望)罰款(我有一個視圖,其中包含一個滾動視圖,其中包含一個視圖有4個文本框和一個textview)。

我試圖用viewDidLayoutSubviews()以編程方式將內容大小設置爲很大,但這也沒有幫助。

我在這些方法中加入:

func scrollViewWillBeginDragging(scrollView: UIScrollView) { 
    print("touch detected") 
} 

func scrollViewDidScroll(scrollView: UIScrollView) { 
    print("scrolling happened") 
} 

當我跑我的應用程序,並嘗試手動滾動,「觸摸檢測」被打印一次和「滾動發生」打印多次。我很困惑,因爲它似乎正確的方法被調用,但我看不到任何滾動。

另外,我有這樣的方法:

func keyboardWasShown(aNotification: NSNotification) { 
    let info = aNotification.userInfo 
    let kbSize = info![UIKeyboardFrameBeginUserInfoKey]?.CGRectValue().size 
    let contentInsets = UIEdgeInsetsMake(0.0, 0.0, kbSize!.height, 0.0) 
    scrollView.contentInset = contentInsets 
    scrollView.scrollIndicatorInsets = contentInsets 
} 

但是,即使當我點擊即得到由鍵盤覆蓋了一個文本框,我的屏幕不滾動。

我試過在這裏搜索很多解決方案,但似乎沒有任何幫助。如果有人對可能出現的問題有任何想法,我會非常感謝!非常感謝!!

+0

你應該真的展示如何設置滾動視圖及其內容的代碼 – Wain

+0

我是通過故事板完成的......我不確定如何顯示它?我應該截圖約束嗎? – Rani

回答

0

滾動視圖與自動佈局有點特殊。確保按照Technical Note TN2154中所述配置了約束條件。

此外,如果您的委託方法指示滾動正在發生,但您沒有看到內容移動,請仔細檢查內容實際上是滾動視圖的子視圖,而不是滾動視圖的超級視圖的子視圖這只是覆蓋滾動視圖。

請記住,UIKit應該只在主線程上使用 - 滾動視圖的奇怪行爲是嘗試從後臺線程使用UIKit的一個症狀。

最後,使用the view debugger built into Xcode在運行時檢查視圖層次結構。

+0

據我所知,我的約束是以這種方式配置的,而我的內容實際上是一個子視圖。 我如何知道我是否在後臺線程上使用UIKit?另外,我對此有點新,所以我可以進一步指導如何使用調試器來弄清楚這有什麼問題?感謝您的幫助!! – Rani

+0

明白了!這實際上是我的約束有些問題,我的內容視圖中的頂部內容被固定在滾動視圖之外的某個內容,而且它本不應該是這樣。非常感謝!! – Rani

+0

如果你不知道你是否使用後臺線程,那麼你幾乎肯定不會。您只需單擊視圖調試器按鈕,並在[本視頻](https://www.youtube.com/watch?v=KUjbhGOV7DM)中查看您的視圖。 – Jim