我正在寻找一种以编程方式禁用UITextView水平滚动的方法,通过Interface Builder很容易,但由于我以编程方式设计视图,我找不到办法来做到这一点,我已经谷歌搜索它,但我得到的最多是:
How to stop the horizontal scrolling programmatically?
它不起作用。 任何提示?
self.textViewOpenedRect = CGRectMake(20, 20, 280, 130);
self.textView = [[UITextView alloc] initWithFrame: self.textViewOpenedRect];
self.textView.contentInset = UIEdgeInsetsMake(5, 5, 5, 5);
self.textView.delegate = self;
self.textView.backgroundColor = [UIColor clearColor];
self.textView.contentSize = CGSizeMake( self.textView.frame.size.height, self.textView.contentSize.height);
self.textView.alwaysBounceHorizontal = NO;
self.textView.bounces = NO;
更新:显然问题是因为这行代码:
self.textView.contentInset = UIEdgeInsetsMake(5, 5, 5, 5);
我用它在框架和文本之间留出一点空间。 。 .am我做得好吗?
答案 0 :(得分:12)
这应该有帮助......
UITextView
是UIScrollView
的子类,所以这很容易实现。
mytextView.contentSize = CGSizeMake(mytextView.frame.size.height,mytextView.contentSize.height);
mytextView.showsHorizontalScrollIndicator = NO;
答案 1 :(得分:3)
只是在这里添加一点,"左右滚动"即使您禁用水平滚动是由ContentInsets引起的。以下禁用:
self.textView.contentInset = UIEdgeInsetsMake(5, 0, 5, 0);
答案 2 :(得分:3)
使用自定义插件我发现对我来说最好的解决方案是将UITextView子类化,然后在layoutSubviews中调用以下代码。
-(void) layoutSubviews
{
// always keep content offset at x = 0
self.contentOffset = CGPointMake(0, self.contentOffset.y );
[super layoutSubviews];
}
希望这有助于某人。