2012-03-11 97 views
0

我正在寻找一种方法来以编程方式禁用水平滚动的UITextView,这很容易通过接口生成器,但由于我以编程方式设计视图,我找不到方法做到这一点,我GOOGLE了它很好,但我得到了最多的是这样的:以编程方式禁用水平滚动到UITextView

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

你应该发布一些代码,只是有些事情你做错了。除非你还没有试图实现那个链接上的内容。 – 2012-03-11 18:42:44

+0

添加了一些代码,对不起^^ – 2012-03-11 19:55:03

+0

如果你做出答案,然后写出来作为答案,不要只是修改你的帖子,并标记错误的答案是正确的。 – 2013-04-23 09:12:07

回答

12

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

mytextView.contentSize = CGSizeMake(mytextView.frame.size.height,mytextView.contentSize.height); 

mytextView.showsHorizontalScrollIndicator = NO; 
+0

之前做过,问题仍然存在,它仍然显示水平指标和“移动一点”...我真的不知道为什么 – 2012-03-11 19:56:02

+0

阅读我的更新,通过评论该问题消失O_O – 2012-03-11 20:01:05

+1

@i_mush:以防万一你需要水平插入,相应地减少你的UITextView的contentSize.width。 – kervich 2013-07-17 12:04:44

3

就在这里补充一点,你禁用“左右滚动的点点”即使水平滚动由ContentInsets引起的。以下禁用:

self.textView.contentInset = UIEdgeInsetsMake(5, 0, 5, 0); 
2

通过自定义的插图,我发现对我来说是最好的解决办法是继承的UITextView然后在layoutSubviews调用下面的代码。

-(void) layoutSubviews 
{ 
    // always keep content offset at x = 0 
    self.contentOffset = CGPointMake(0, self.contentOffset.y); 
    [super layoutSubviews]; 
} 

希望这可以帮助别人。

+0

这太好了。唯一真正为我工作的东西。谢谢! – jpincheira 2014-07-08 16:38:33

+0

我真的不明白这是不被接受的答案,因为我是唯一一个真正有效的人。谢谢! – 2015-03-10 15:09:52