【问题标题】:UITextView always scrolls from the beginning when using scrollRangeToVisible()使用 scrollRangeToVisible() 时 UITextView 总是从头开始滚动
【发布时间】:2015-04-29 09:23:05
【问题描述】:

我正在调试一个记录我的操作的UITextView

例如如果我按下屏幕上的特殊按钮,UITextView 将显示我刚刚按下的按钮。当我按下更多按钮时,它会记录更多,因此我可以轻松滚动UITextView 以查看我过去的操作。

因为UITextView 本身不会随着文本的增加而滚动,所以我尝试让它在登录时滚动到最后一行。 我尝试使用下面的 scrollRangeToVisible() 方法

history.scrollRangeToVisible(NSMakeRange(count(history.text!) - 1, 1))

这里的历史是UITextView 出口。

问题是,这个方法总是让UITextView从头滚动到指定的NSRange。更具体地说,它将视图重置到文本的开头,然后向下滚动到NSRange 所在的位置。我要直接下scroll

有人可以解决这个问题吗?非常感谢。

【问题讨论】:

    标签: ios uiscrollview uitextview


    【解决方案1】:

    此链接 (what to use instead of scrollRangeToVisible in iOS7 or TextKit) 建议关闭滚动,进行更改然后将其打开。

    history.scrollEnabled = NO;
    [history scrollRangeToVisible:NSMakeRange(history.text.length - 1,0)];
    history.scrollEnabled = YES;
    

    编辑

    经讨论解决:

    history.layoutManager.allowsNonContiguousLayout = NO; 
    

    在这里看到这个:UITextView setText should not jump to top in ios8

    【讨论】:

    • 我使用的是 iOS 8.3,看来这个解决方案不适合我。无论如何谢谢:)
    • 另一个选项是在添加新文本之前禁用滚动,然后再启用它。也许文本的插入正在重置与滚动相关的内容,导致它首先扭曲到顶部。见stackoverflow.com/questions/24453108/…
    • 这与您上面提到的解决方案相同,似乎对我不起作用:(
    • 不一样。第一个是在滚动关闭时执行滚动请求。第二个是在滚动关闭时插入/附加文本。
    • 对不起,我没有仔细阅读。使用第二种解决方案,即使在 scrollEnabled 设置为 true 后,我的 UITextView 仍然被禁用(无法滚动)。这只是一个谜
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-03
    • 1970-01-01
    相关资源
    最近更新 更多