【发布时间】:2018-08-29 15:04:26
【问题描述】:
当用户按下文本视图本身之外的按钮时(在 iOS 上),我希望我的 UITextView 滚动到特定点(一个单词,或者更好的断点:>>>“)。字体大小可能因用户交互而异(即用户可以增大或减小字体大小)。文本本身由用户粘贴(他们以交互方式添加断点)。
我试图通过获取断点 (">>>") 的 y 位置(以像素为单位)然后根据(使用 setContentOffset)设置 textView 的偏移量来实现这一点。
问题是我得到的y点是错误的!
这是我的代码的一个 sn-p(仅适用于 >>>“重复出现的一个):
NSRange range = [self.textview.text rangeOfString:@">>>"];
UITextPosition *beginning = self.textview.beginningOfDocument;
UITextPosition *start = [self.textview positionFromPosition:beginning offset:range.location];
UITextPosition *end = [self.textview positionFromPosition:start offset:range.length];
UITextRange *textRange = [self.textview textRangeFromPosition:start toPosition:end];
CGRect rect = [self.textview firstRectForRange:textRange];
[self.textview setContentOffset:CGPointMake(0, rect.origin.y)];
我的方法有什么问题?我觉得有更好(更简单)的方法来做同样的事情......
PS:我找到了另一个与相同问题相关的主题,但它在 swift 中,我无法翻译:Scroll UITextView to specific text
【问题讨论】:
标签: ios xcode scroll uitextview nsrange