【发布时间】:2018-02-22 19:17:29
【问题描述】:
我想在滚动视图中使用文本视图来实现文本搜索功能。我已经用“上一个”和“下一个”按钮连接了一个文本视图。当用户单击任一按钮时,它应该滚动到正在搜索的单词/句子。
使用字符串属性和 NSRange 我已经能够找到并突出显示用户选择的单词或句子。
var colorText = new NSMutableAttributedString(fileString, attrFont);
var attrHL = new UIStringAttributes { ForegroundColor = UIColor.Red };
colorText.AddAttributes(attrHL.Dictionary, new NSRange(idxStart, length);
但我不知道如何让滚动视图滚动到所选文本并使其保持可见。由于文本视图中显示的文本大于滚动视图的大小,我必须使用 contentoffset.Y 来移动可见视图,但是如何找到所选单词/句子的 Y 点?
现在,如果显示的文本大于视图大小,搜索的文本会突出显示,但它可能不在可见视图中,我必须手动向下滚动才能看到突出显示的文本。
【问题讨论】:
-
你看过
UITextView的.scrollRangeToVisible()方法吗? developer.apple.com/documentation/uikit/uitextview/… -
整个文本都在一个标签中吗?还是文本视图?向我们提供有关您在那里的视图层次结构的更多信息
-
我试过 Textview 的 ScrollRangetoVisible 但不起作用(不滚动)。我相信我必须使用滚动视图的 ScrollRectToVisible 但这需要一个我不知道如何从突出显示的文本中获取的 CGRect() 。如果我能得到突出显示文本开头的 X、Y 点,我应该使用 ScrollRectToVisible()。
-
文本在文本视图中而不是标签中,因为文本可能很长,因此需要此搜索功能。
-
如果你让你的文本视图比包含它的滚动视图更高(或更宽),你就是在自找麻烦。会有相互冲突的“滚动手势”,并且如您所见,将文本“显示在视图中”会出现问题。
标签: ios xamarin uiscrollview