如何在iOS中制作单行水平刻录UITextView

时间:2015-12-07 13:34:32

标签: ios objective-c iphone uiscrollview uitextview

从几天开始,我尝试制作UITextView widthheightfixed的{​​{1}}。而作为用户类型,其内容大小会增加。因此,线不会中断。

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

如果他水平滚动,那么他可以滚动content UITextView,而不是录制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和SO中搜索过。

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

Link 1 Link 2

2 个答案:

答案 0 :(得分:0)

请勿使用member_hook,而应使用UITextView,并将行设置为1。

答案 1 :(得分:0)

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

    _textView.contentSize=CGSizeMake(500, 20);

另外,请确保约束textview宽度和高度,就像对普通scrollView一样。

限制textview中的行数:

      _textView.textContainer.maximumNumberOfLines=1;

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