如何在 iOS 中制作单行水平滚动 TextView

Posted

技术标签:

【中文标题】如何在 iOS 中制作单行水平滚动 TextView【英文标题】:How to make Single Line Horizontally Scolling UITextView in iOS 【发布时间】:2015-12-07 13:34:31 【问题描述】:

从几天开始,我试图创建一个UITextView,其中widthheightfixed。并且随着用户类型其内容大小的增加。这样线路就不会断了。

用户感觉他正在输入一行。

如果他水平滚动,那么他可以滚动UITextViewcontent,而不是在UITextView 中录音。

我正在使用这段代码来实现:

- (void)viewDidAppear:(BOOL)animated

UITextView *txtView = [[UITextView alloc]initWithFrame:CGRectMake(10, 100, 200, 50)];

txtView.text = @"Hello";
txtView.backgroundColor = [UIColor redColor];
txtView.delegate = self;
[txtView setFont:[UIFont fontWithName:@"ArialMT" size:40]];
txtView.contentSize =txtView.frame.size;
[self.view addSubview:txtView];


//Delegate method

  -(void)textViewDidChange:(UITextView *)tView


if (tView.text.length > 8) 
    // Set some higher width of the text view content size.
    tView.contentSize = CGSizeMake(200.0f, tView.frame.size.height);


但它似乎不起作用。当我到达末尾时,我的光标移到了下一行。

我在 Google And SO 中搜索过。

找到这些链接,但它们似乎不起作用。

Link 1Link 2

【问题讨论】:

你尝试将 textview 添加到 scrollview 吗? 【参考方案1】:

不要使用UITextView,而是使用UITextField,行数设置为1。

【讨论】:

但是如果我输入额外的内容怎么办...我希望用户水平滑动并且内容滚动...我如何在TextField中做到这一点 您可以尝试在文本字段中添加 UIGestureRecognizer 以对滑动做出反应 我该如何滚动内容...手势识别器是好的..但是如何滚动内容:( 将文本字段放在滚动视图中,滑动时移动内容偏移量。 制作一个 UIScrollView,将 textfield 放在它的内容视图中,当内容视图变大时更改内容视图大小,更改滚动视图的内容偏移量以滚动滚动视图(从而滚动文本字段)跨度> 【参考方案2】:

要使UITextView 水平滚动,您需要指定其contentsize 的宽度大于其框架。

    _textView.contentSize=CGSizeMake(500, 20);

还要确保像普通的scrollView 一样限制textview 的宽度和高度。

限制文本视图中的行数:

      _textView.textContainer.maximumNumberOfLines=1;

但是如果你想让textView 变成一行,那么你应该在scrollView 中使用UITextView。为了更简单,请在scrollView 中使用UITextField

【讨论】:

以上是关于如何在 iOS 中制作单行水平滚动 TextView的主要内容,如果未能解决你的问题,请参考以下文章

在 iOS 7 中使用 UIScrollView 在 iOS 中创建水平滚动 UIButton

如何在颤动中制作水平滚动动画

如何在 SpriteKit 中制作水平滚动字符选择器

如何使用自动滚动制作水平滚动文本视图?

如何设置表格视图以仅在 ios 中显示单行?

如何在 Swift 中制作放置在 UIViewController 中的水平可滚动组件?