以编程方式禁用水平滚动到UITextView

时间:2012-03-11 18:36:49

标签: iphone objective-c ios uitextview horizontal-scrolling

我正在寻找一种以编程方式禁用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我做得好吗?

3 个答案:

答案 0 :(得分:12)

这应该有帮助...... UITextViewUIScrollView的子类,所以这很容易实现。

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];
}

希望这有助于某人。