你如何让一个空的 UITextView 像 iOS 上的 Notes 一样滚动?

Posted

技术标签:

【中文标题】你如何让一个空的 UITextView 像 iOS 上的 Notes 一样滚动?【英文标题】:How do you make an empty UITextView scrollable like Notes on iOS? 【发布时间】:2012-05-09 20:14:38 【问题描述】:

ios 中,当内容很少或没有内容时,如何使 UITextView 可滚动并响应触摸?

在我的应用程序中,一旦文本填满文本视图,滚动条就会出现,我可以滚动。不过比这要少,而且由于所有内容都在 UITextView 的框架内,所以它是静态的,不会移动。

我想要的就像 iPhone Notes 应用程序一样工作,无论是一行文本,甚至当一个便笺为空时,您都可以滚动视图。

现在我只使用 UITextView,我很难理解是否还需要 UIScrollView。

我找不到与此问题相关的问题。谢谢!

【问题讨论】:

【参考方案1】:

对于将来偶然发现此页面的任何人:

我只需启用alwaysBounceVertical 并确保启用了用户交互和滚动即可实现此目的。

self.textView.scrollEnabled = YES;
self.textView.userInteractionEnabled = YES;
self.textView.alwaysBounceVertical = YES;

对于 Swift 3.0:

    textView.alwaysBounceVertical = true
    textView.isUserInteractionEnabled = true
    textView.isScrollEnabled = true

【讨论】:

在我完成所有搜索之后,这是我记得看到的第一个提到“alwaysBounceVertical”的答案。马上解决了我同样的问题。谢谢你。【参考方案2】:

是的,您需要从 UIScrollView 开始。然后添加文本视图并设置它的自动调整大小属性以拉伸和填充视图(单击彼此交叉的两个内部箭头中的每一个)

现在,当您的文本更新时,您需要根据 textView 的内容大小重置主视图的大小。

CGRect frame = textView.frame;
frame.size.height = textView.contentSize.height;
self.view.frame = frame;

为了在文本到达屏幕底部时使其工作,需要在 UITextView 委托的 textViewDidChange: 方法中调用它。一旦你让它工作,我建议添加一些逻辑以防止它在每次按键后触发。也许在重置视图框架之前确保 contentSize.height 确实增加了。

【讨论】:

【参考方案3】:

试试这个,它应该是你需要的唯一一行:

textView.alwaysBounceVertical = true

感谢 Serenn 的回答。

【讨论】:

以上是关于你如何让一个空的 UITextView 像 iOS 上的 Notes 一样滚动?的主要内容,如果未能解决你的问题,请参考以下文章

iOS - UITextView 中的换行符

如何检测 URL 是不是已粘贴/输入到 UITextView? Swift iOS [关闭]

uitextview键盘弹出的时候如何让 “return”显示成“换行”

UITextView iOS 7的行数

有没有办法让 iOS 的自动更正忽略 UITextView 中的单个单词或正则表达式?

UItextView iOS 7 问题