2017-02-09 35 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