如何在iOS上制作像Notes一样的空UITextView可滚动?

时间:2012-05-09 20:14:39

标签: ios uiscrollview uitextview

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

在我的应用中,一旦文本填满了文本视图,就会出现滚动条,我可以滚动。虽然不到这一点,并且因为所有内容都是UITextView的框架,所以它是静态的,不会移动。

我想要的就像iPhone Notes应用程序一样,无论是否有一行文字,或者即使注释为空,您也可以滚动视图。

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

我无法找到特定于此问题的问题。谢谢!

3 个答案:

答案 0 :(得分:12)

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

我只需启用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

答案 1 :(得分:0)

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

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

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

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

答案 2 :(得分:0)

尝试一下,它应该是您唯一需要的一行:

textView.alwaysBounceVertical = true

感谢Serenn的回答。