【问题标题】:How do I know when a user has reached the end of the text in NSTextView我如何知道用户何时到达 NSTextView 中的文本末尾
【发布时间】:2014-05-12 19:57:17
【问题描述】:

我的用户正在阅读UITextView 中的只读文本。当他们完成阅读选择后,我希望能够显示一个Completed Reading 按钮。如何检测用户何时滚动到文本末尾?

【问题讨论】:

  • 为了澄清混淆 - 我说的是 NSTextView 而不是 UITextView - 所以我的问题被编辑以将标签从 iOS 更改为 OSX,这导致 3 人(最有帮助)提供 OSX 特定的答案......对不起.请仍在寻找 iOS 解决方案!

标签: iphone ipad ios7


【解决方案1】:

试试这个。首先在每次读取之前根据其widt的大小计算textview中文本的大小。然后从那里检查 textview 的内容偏移量是否达到了在 text view 中加载的文本的 maxSize 的大小。

【讨论】:

  • 问题上的标记存在问题。被误认为 OSX。应用程序适用于 iOS。还是谢谢!
  • 这对于 OSX 和 iOS 来说是相同的答案,您仍然需要读取文本的大小并以某种方式协调您的内容偏移与 UITextViews contentHeight 的完整大小相比的位置跨度>
  • 当你设置了一个 UITextView 的文本并且文本的大小大于它的边界时,UITextView 所基于的 UIScrollview 的 contentSize 被设置为一个大于它的边界的大小。当您滚动时,您可以检查 contentOffset,这是告诉 UIScrollView 在 UIScrollViews 范围内显示哪个帧的属性。因此,由于您将计算文本的大小并获取其高度。该高度应等于 contentOffset 的高度 + 视图 bounds.height。
【解决方案2】:

试试这个:

float scrollerPosition = [[[textView superview] verticalScroller] floatValue];

滚动条位置应在0.01.0 之间。

【讨论】:

  • 我相信文本视图的superview 将是剪辑视图。无论如何,请改用-enclosingScrollView,因为它更可靠。
  • 谢谢,但问题上的标记有问题。被误认为 OSX。应用程序适用于 iOS。无论如何,谢谢:)
【解决方案3】:

我认为咨询垂直滚动条的位置是不对的。如果滚动视图大到足以显示整个文本视图而不滚动会发生什么?滚动条是 0.0 还是 1.0?

我认为您应该参考滚动视图的-documentVisibleRect 并将其与文本视图的-bounds 进行比较。如果前者的NSMaxY() 大于等于后者的NSMaxY(),那么文本视图的底部是可见的。如果文本视图也可能水平滚动并且您关心它们是否一直向右滚动,请以相同的方式检查两个矩形的NSMaxX()

【讨论】:

  • 谢谢,但问题上的标记有问题。被误认为 OSX。应用程序适用于 iOS。大声笑 - 我尝试咨询滚动视图的 -documentVisibleRect - 真的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多