如何仅在 UITextView 上强制水平滚动
Posted
技术标签:
【中文标题】如何仅在 UITextView 上强制水平滚动【英文标题】:how to force horizontal scrolling only on UITextView 【发布时间】:2012-05-22 14:01:02 【问题描述】:我有一个UITextView
与contentSize
属性设置为一个非常大的值1000
,UITextView
的宽度是 200,启用滚动,启用水平弹跳和禁用垂直弹跳但是这个@ 987654326@ 仍然在大文本上垂直滚动。
我怎样才能强制水平滚动呢?
附言the solution here 不起作用。
【问题讨论】:
【参考方案1】:UITextView 是 UIScrollView 的子类。所以你可以使用 ScrollViewDelegate 方法来禁用它。
使用 -
- (void)scrollViewDidScroll:(id)aScrollView
[aScrollView setContentOffset:CGPointMake([scrollView contentOffset].x, 0.0)];
【讨论】:
【参考方案2】:我尝试了许多不同的方法来让水平滚动功能按预期工作,但这些方法都不适合我,所以我创建了一个 UIScrollView 并在滚动视图中添加了一个 UILabel 作为子视图,并设置了框架的标签的宽度根据其文本和文本字体动态,之后我将滚动视图的 contentSize 设置为等于标签的新框架宽度和高度。使用此方法,您将获得水平滚动的文本。
【讨论】:
【参考方案3】:使用 JAHelia 的建议,这对我有用:
self.dishNameLabel.text = @"Here is some very longgggg text to test with";
float width = ceil([self.dishNameLabel.text sizeWithAttributes:@NSFontAttributeName: [UIFont fontWithName:@"WorkSans-SemiBold" size:15.0]].width);
self.dishNameLabel.frame = CGRectMake(self.dishNameLabel.frame.origin.x, self.dishNameLabel.frame.origin.y, width, self.dishNameLabel.frame.size.height);
self.dishNameScrollView.contentSize = CGSizeMake( width, self.dishNameScrollView.frame.size.height);
当然,您必须用各自的规范替换文本和字体
【讨论】:
以上是关于如何仅在 UITextView 上强制水平滚动的主要内容,如果未能解决你的问题,请参考以下文章