禁用 UITextView 中的滚动,同时避免在 ios 的当前位置弹跳到顶部和文本不可见
Posted
技术标签:
【中文标题】禁用 UITextView 中的滚动,同时避免在 ios 的当前位置弹跳到顶部和文本不可见【英文标题】:Disable scrolling in a UITextView while avoiding both bouncing to top and invisibility of text at the present location for ios 【发布时间】:2015-11-29 01:00:19 【问题描述】:我尝试了很多方法,但无法找到解决方案。任何想法都可以帮助我对此进行评估。我做了一个从 UITextView 类继承的完整视图 DrawBoard 类。当视图控制器上的开关打开时,用户可以键入和滚动,当它关闭时,用户可以在 Drawboard 上绘图。
@IBAction func changeSwitch(sender: UISwitch)
if sender.on
drawBoard.setNeedsDisplay()
drawBoard.scrollEnabled = true
drawBoard.editable = true
drawBoard.selectable = true
drawBoard.switchBool = false
else if !sender.on
drawBoard.switchBool=true
let a:CGPoint = drawBoard.contentOffset
drawBoard.scrollEnabled = false
drawBoard.setContentOffset(a, animated: false)
drawBoard.editable = false
drawBoard.selectable=false
它会更新滚动,但 scrollEnabled= false
只是保存 textview 第一页范围内的文本,以便它自动滚动到顶部并禁用那里的滚动。然后当我执行 setContentOffset 时,可绘制视图背景是可见的,它绘制在文本视图的正确位置。但是,应该在它上面的文本是不可见的。仅当我不在第一页范围内时将开关按钮设置为关闭时才会发生这种情况。如何使该范围内的文本也可见?
对不起,如果这是一个非常简单的问题,我是编程新手,并且为此卡了相当长的时间。谢谢。
【问题讨论】:
【参考方案1】:您必须更新 UIScrollView 的内容大小。
像这样:
scrollView.contentSize = CGSize(width: 100, height: 100)
“内容大小”决定了可滚动内容的大小,如果它不足以覆盖新视图,您将无法在滚动视图中看到它。
【讨论】:
我没有 ScrollView,我只有一个自定义 UITextView 类 DrawBoard,我不想限制它的高度。我遇到的问题是 scrollEnabled=false 因为它会自动将 UITextView 的滚动条反弹到顶部。 ScrollEnabled 阻碍了 setContentOffSet(我在上面的代码中使用),并且 CGPoint a 下面的文本没有显示在 textView 中,尽管内容在正确的位置。我希望问题现在更清楚了。谢谢您的答复。如果有误会,您会建议我用这个澄清来编辑上述问题吗?以上是关于禁用 UITextView 中的滚动,同时避免在 ios 的当前位置弹跳到顶部和文本不可见的主要内容,如果未能解决你的问题,请参考以下文章
如何让 UIScrollView 滚动到 UITextView 的光标位置?