2017-02-09 72 views
0

我有一個textView,它的文字內容會增加。 我想知道如何設置一個布爾值,像isTextViewScrollToBottom:BOOL 當TextView的是滾動到底部,然後isTextViewScrollToBottom =真 當TextView的是離開底部,然後isTextViewScrollToBottom =假如何知道textView是滾動到底部?

現在,我只知道可以使用scrollViewDelegate FUNC喜歡:

scrollViewDidEndDecelerating(_滾動視圖:UIScrollView中),

scrollViewWillBeginDragging(_滾動視圖:UIScrollView中),

scrollViewDidEndDragging(_ SC rollView:UIScrollView中,willDecelerate減速:布爾)

,我試試這個:

func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) { 
    checkIsScrollToBottom(scrollView) 
} 
func scrollViewWillBeginDragging(_ scrollView: UIScrollView) { 
    checkIsScrollToBottom(scrollView) 
} 
func scrollViewDidEndDragging(_ scrollView: UIScrollView, willDecelerate decelerate: Bool) { 
    checkIsScrollToBottom(scrollView) 
} 

fileprivate func checkIsScrollToBottom(_ scrollView: UIScrollView){ 
    if textViewForChatContent.contentSize.height - scrollView.contentOffset.y == 301 { 
     isScrollToBottom = true 
     print("isScrollToBottom=\(isScrollToBottom)") 
    }else{ 
     isScrollToBottom = false 
     print("isScrollToBottom=\(isScrollToBottom)") 
    } 
} 

但這種判斷是不是所有的設備很好用。 是有人知道更好的判斷,可以知道textView是否滾動到底?

謝謝!

+0

重複的是在Objective-C,但由於該解決方案僅僅是scrollOffset的一個基本的線計算,我將其標記爲重複。 – 2017-02-09 02:55:13

+0

非常感謝,它解決了我的問題! – DanielTing

+0

NP;高興地幫助 – 2017-02-09 03:47:32

回答

2

從這個question

您可以使用此功能:

func scrollViewDidScroll(_ scrollView: UIScrollView) { 

    if (scrollView.contentOffset.y >= scrollView.contentSize.height - scrollView.frame.size.height) { 

     print("View scrolled to the bottom") 

    } 
} 
+0

不要忘記將源代碼添加到原始線程 – 2017-02-09 04:04:59

+0

@Sneak是謝謝你的提醒 –

+0

NP,upvoted,好工作。 – 2017-02-09 04:06:55