使用有限的行数滚动UITextView中的内容

时间:2016-02-06 22:05:24

标签: ios uiscrollview uitextview

我设置UITextView控件按照我的预期工作有问题。 我有类似的东西:

[textView.textContainer setMaximumNumberOfLines:3];
[tv.textContainer setLineBreakMode:NSLineBreakByWordWrapping];
[textView setUserInteractionEnabled:YES];
[textView setScrollEnabled:YES];

我的预期结果是具有默认1行高的可编辑文本视图。当我放置文本时,控件最多花费3行,之后我仍然可以写,但内容将在3行控件中滚动。

不幸的是,基于上面的代码,我无法得到这个结果。当我的控件有3行高度,并且我放了更多文本,然后我的光标消失了,我仍然可以写,但没有可能滚动输入的内容。

您是否有任何建议或提示如何实现UITextViewController的预期行为?

1 个答案:

答案 0 :(得分:0)

继续我的评论之后,这里有一个例子,说明如何控制多少空间' UITextView可以使用以及如何设置滚动以匹配:

UITextView* _textView = [UITextView new];
// other setup...
_textView.textContainerInset = UIEdgeInsetsMake(60, 5, 8, 5);
_textView.scrollIndicatorInsets = UIEdgeInsetsMake(52, 0, 0, 0);

在这个例子中,我让_textView占用了它的所有父视图(使用自动布局约束,这相当于整个屏幕)。 E.g。

NSArray* constraints;
constraints = [NSLayoutConstraint constraintsWithVisualFormat:@"H:|[_textView]|" options:0 metrics:nil views:views];
[self.view addConstraints:constraints];

constraints = [NSLayoutConstraint constraintsWithVisualFormat:@"V:|[_textView]" options:0 metrics:nil views:views];
[self.view addConstraints:constraints];

我的屏幕顶部还有一个自定义工具栏,其高度为52。 (自定义工具栏,而不是库存UINavigationBar)。

因此,在这种情况下,我使用textContainerInset属性来限制用于显示文本的文本视图部分:上边距最相关,我想清除{{1的高度从工具栏中,然后有一些额外的边距(8)。

此外,我使用52使滚动指示符从顶部停止scrollIndicatorInsets个单位(工具栏的大小)。

我不确切知道你的52如何与你视图中的其他控件相符...但是,为了控制用于文本的空间量以及滚动如何与之一起工作,你需要做的不仅仅是:

textView

这有帮助吗?