2017-01-18 4 views
0

Я сделал один пользовательский элемент UITextview с View.It работает нормально. Когда я ввожу новый текст, текст увеличивается с увеличением (Темно-синий). После этого TextViell будет работать в форме прокрутки.Как изменить размер UITextView, когда он имеет только одну строку Из многострочной формы С View

Кодекс

-(void)setTextViewHeight 
{ 
    self.oldFrameHeight = self.commentTextView.frame.size.height; 
    CGFloat fixedWidth = self.commentTextView.frame.size.width; 
    CGSize newSize = [self.commentTextView sizeThatFits:CGSizeMake(fixedWidth, MAXFLOAT)]; 
    CGRect newFrame = self.commentTextView.frame; 
    newFrame.size = CGSizeMake(fmaxf(newSize.width, fixedWidth), newSize.height); 
    self.commentTextView.frame = newFrame; 
    self.newFrameHeight = newFrame.size.height; 
    NSLog(@"Old Frame %f",self.oldFrameHeight); 
    NSLog(@"New Frame %f",self.newFrameHeight); 
} 
- (void)textViewDidChange:(UITextView *)textView 
{ 


    self.oldFrameHeight = textView.frame.size.height; 


    if(!(self.oldFrameHeight >= 44)) 
    { 
     [self setTextViewHeight]; 

     if (self.newFrameHeight > self.oldFrameHeight) 
     { 
      [self sabViewFrameChange]; 
     } 
    } 
    else if ([textView.text isEqualToString:@""]) 
    { 
     [self.commentTextView setFrame:CGRectMake(60, 10,self.frame.size.width - 130, 30)]; 

     UIViewController *controller=(UIViewController *)self.delegate; 
     self.frame = CGRectMake(0,controller.view.frame.size.height - 50, controller.view.frame.size.width,50); 
     self.height = 50; 
    } 
    else 
    { 
     self.commentTextView.scrollEnabled = YES; 
    } 
} 

Мой вопрос Является ли

Когда я снял вторую линию от UITextView размер останется, как есть, я не уменьшалась с линией.

Пожалуйста, помогите мне. Спасибо заранее.

Изображение

1) С более двух линейных

enter image description here

2) С одной линии

enter image description here

Как я могу решить это? Кто угодно есть идея?

+0

в вашем личном вопросе ответ также управляет этим. если у вас есть одна строка, тогда также можно настроить ваше представление для данных с одной строкой. проверить мой ответ http://stackoverflow.com/a/41676540/6656894 –

+0

Нет, нет, это было правильно. Я понял очень хорошо. Но проблема в том, что если я использую эту порцию здесь каждый раз, когда она будет звонить, соответственно изменит размер текста, но здесь это невозможно. – user7018875

+0

@ Химаншу Морадия: «Я всего лишь 3 месяца свежего, поэтому я не могу найти правильное решение. Если вы не хотите проблем, пришлите мне свой адрес электронной почты. Я пришлю демо-код, пожалуйста. – user7018875

ответ

1

Declare numLinesInTextView переменная

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text; 
{ 
    NSLog(@"%@",text); 
    if ([text isEqualToString:@"\n"]) { 
      NSLog(@"New line"); 
    }else{ 
     int numLines = [textView intrinsicContentSize].height/textView.font.lineHeight; 
     NSLog(@"%f",textView.font.lineHeight); 

     numLinesInTextView = numLines; 
     if (numLinesInTextView == 0) { 
      [self.commentTextView setFrame:CGRectMake(60, 10,self.frame.size.width - 130, 30)]; 
      UIViewController *controller=(UIViewController *)self.delegate; 
      self.frame = CGRectMake(0,controller.view.frame.size.height - 50, controller.view.frame.size.width,50); 
      height = 50; 
      numLinesInTextView = 0; 
     } 

    } 
    return YES; 
} 

Добавить этот метод в проекте и проверить это его полностью работать нормально. Теперь.

Счастливое кодирование.

+1

Спасибо Это работает – user7018875