我如何知道用户何时到达 UITextView 中文本的末尾
Posted
技术标签:
【中文标题】我如何知道用户何时到达 UITextView 中文本的末尾【英文标题】:How do I know when a user has reached the end of the text in UITextView 【发布时间】:2014-06-12 06:38:46 【问题描述】:我的用户正在阅读 UITextView 中的只读文本。当他们完成阅读选择并滚动到底部时,我希望能够显示一个从底部向上动画的已完成阅读按钮。如何检测用户何时滚动到文本末尾?
【问题讨论】:
你试过这个吗:***.com/questions/13969970/…?UITextView
扩展 UIScrollView
。利用滚动视图代表知道它何时滚动到底部。
对不起,-scrollViewDidEndDecelerating 确实比 -scrollViewDidScroll 工作得更好,但是如果用户向上滚动它也会触发,所以我需要一种方法来辨别可见的文本是否实际上是文本的最后一部分.我尝试使用不可见的 end_marker_string,但它正在搜索所有文本,而不仅仅是可见的文本。
@ujell - 是的。我没有看到这个问题,但我尝试过这种方法。我不确定他们为什么说它对他们有用。当我使用它时,每次都会打印 NSLog 语句,因此这种查看您是否处于底部的方法不起作用。我又试了一次以确保。谢谢。
我在 -scrollViewDidEndDescelerating 中使用此代码。我有一个附加一个由 -viewDidLoad NSString * strVisibleText = [self visibleTextInTextView:self.textView] 调用的 ENDMARKERSTRING 的方法; if ([strVisibleText rangeOfString:END_MARKER_STRING].location == NSNotFound) NSLog(@"字符串不包含 END_MARKER_STRING"); else NSLog(@"字符串包含 END_MARKER_STRING");
【参考方案1】:
嘿,只需添加 UIScrollViewDelegate 并提供以下方法,该方法将被称为滚动结束到达。
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView;
所以试一试,如果有什么问题请告诉我。
【讨论】:
谢谢,这是我正在使用的事件,因为它触发的频率低于 -scrollViewDidScroll 但它也会在用户向上滚动时触发,因此它本身并不是一个可靠的方法来了解是否你是 textView 中文本的结尾。 我错了!我的 NSLogs 中有一些其他噪音让我认为它会触发两次,但是当我删除它们时,结果证明这是一个非常干净的解决方案。谢谢,标记为正确:) 在方法中,以防其他人需要它: //确定用户是否滚动到底部 if (scrollView.contentOffset.y >= scrollView.contentSize.height - scrollView.frame.size.高度) NSLog(@“底部”);以上是关于我如何知道用户何时到达 UITextView 中文本的末尾的主要内容,如果未能解决你的问题,请参考以下文章
我怎么知道最后一个 OutputDataReceived 何时到达?