2011-08-23 254 views

回答

16

在某些情况下,试图取缔不必要的UITextView滚动时我发现它有助于增加类似下面的UITextView的委托(这是一个UIScrollView委托方法,但是,当然,UITextView继承自UIScrollView)。这可能适合你。

- (void)scrollViewDidScroll:(id)scrollView 
{ 
     CGPoint origin = [scrollView contentOffset]; 
     [scrollView setContentOffset:CGPointMake(origin.x, 0.0)]; 
} 

scrollEnabled属性怎么样?将scrollEnabled属性设置为NO会阻止用户滚动(双向),但有时系统会将setContentOffset:animated:消息发送到UITextView。 scrollEnabled属性适用于垂直和水平滚动。鉴于你的问题,你可能想保持scrollEnabled原样。

+1

该答案还允许我通过锁定x轴而不是y来防止横向滚动。 –

0

为什么不只是使用UITextField,如果你不想垂直滚动?

+0

,因为你不能轻扫在为UITextField左右很好。你不能在uitextfield滚动 – CodeGuy

+0

它不可能禁用垂直滚动,同时保持在默认的UITextView水平滚动。 YOu将不得不继承它并推出自己的 – cpjolicoeur

0

只需将contentSize设置为视图的高度即可。在一个UIScrollView

-1

地方你的UITextView:

你会使用这个。 将您的UITextView.frame设置为一个大小完整的文本适合行,并将ScrollView的contenSize设置为您的UITextView.frame的大小。

干杯 nettz

0

如果您有自定义的textView子类,则可以覆盖-gestureRecognizerShouldBegin以禁用滚动。

-(BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer 
{ 
    if ([gestureRecognizer isKindOfClass:[UIPanGestureRecognizer class]]) 
    { 
     if (gestureRecognizer.view == self) 
     { 
      return NO; 
     } 
     else 
     { 
      return [super gestureRecognizerShouldBegin: gestureRecognizer]; 
     } 
    } 
} 
3

你可以从Xcode的改变 -

Click here

2

为SWIFT 4.0 TextView的垂直滚动关闭

func scrollViewDidScroll(_ scrollView: UIScrollView) { 
    let origin: CGPoint = scrollView.contentOffset 
    scrollView.contentOffset = CGPoint(x: origin.x, y: 0.0) 
} 
+0

它对我来说是完美的作品。谢谢马利克帕特尔 –