2017-01-18 2 views
0

UITextviewカスタムコントロールをViewで作成しました。正常に動作しています。 新しい行に入力すると、ビュー(ダークブルー)でテキストの表示が増えます。このTextViellがスクロールの形で動作した後に表示されます。UITextViewのサイズを変更するには1行しかない場合複数行から表示

コードがある

-(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から2番目の行を削除した

私を助けてください。 ありがとうございます。

イメージより、2つのライン

enter image description here

2)の1行を持つ

enter image description here

どのように私はそれを解決できると

1)のですか?誰でも何か考えている?

+0

あなたの前向きな質問回答でもこれを管理してください。単一行の場合は、単一行データのビューも設定します。私の答えをチェックしてくださいhttp://stackoverflow.com/a/41676540/6656894 –

+0

いいえバディそれは絶対に正解だった、私は非常によく理解したしかし、問題は、私がそれを呼び出すたびにここでその部分を使用する場合は、間違いなくそれに応じてテキストビューのサイズを変更しますが、ここでは不可能です。 – user7018875

+0

@Himanshu Moradiya: - 私はわずか3ヶ月新鮮ですので、私は正しい解決策を見つけることができません、あなたが私のデモコードを送信しますあなたの電子メールを送信してください問題をしたくない場合は、ください。 – user7018875

答えて

1

宣言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

関連する問題