【问题标题】:UITextView - disable vertical scrollingUITextView - 禁用垂直滚动
【发布时间】:2011-11-01 13:46:13
【问题描述】:

如何在我的 UITextView 中禁用垂直滚动?我希望它基本上只是水平滚动。

【问题讨论】:

    标签: iphone ios ipad uitextview


    【解决方案1】:

    在某些情况下,当试图抑制不需要的 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。

    【讨论】:

    • 这个答案还允许我通过锁定 x 轴而不是 y 来防止横向滚动。
    【解决方案2】:

    您可以从 Xcode 更改它 -

    【讨论】:

      【解决方案3】:

      Swift 4禁用垂直滚动的解决方案:

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

      【讨论】:

        【解决方案4】:

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

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

        【讨论】:

          【解决方案5】:

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

          【讨论】:

          • 因为你不能在 uitextfield 中很好地左右滑动。你不能在 uitextfield 中滚动
          • 在默认 UITextView 中保持水平滚动的同时不能禁用垂直滚动。你必须继承它并推出你自己的
          【解决方案6】:

          只需将contentSize 设置为视图的高度即可。

          你会用这个:

          CGSize scrollableSize = CGSizeMake(widthOfContent, heightOfView);
          [myScrollView setContentSize:scrollableSize];
          

          【讨论】:

            【解决方案7】:

            将您的 UITextView 放在 UIScrollView 中。 将您的 UITextView.frame 设置为完整的文本适合一行的大小,并将 ScrollView 的 contenSize 设置为您的 UITextView.frame 的大小。

            干杯 网民

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2019-03-07
              • 1970-01-01
              • 1970-01-01
              • 2016-11-08
              • 1970-01-01
              • 2013-10-26
              • 2016-04-17
              • 2011-07-03
              相关资源
              最近更新 更多