- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
{
CGFloat height = [textView.text sizeWithFont:textView.font].height;
//CGFloat lineWidth;
NSLog(@"initial height = %f", self.textViewHeight);
int charsAsInt;
if ([[NSCharacterSet newlineCharacterSet] characterIsMember:[text characterAtIndex:text.length-1]])
//if{
([[NSCharacterSet newlineCharacterSet] characterIsMember:[text characterAtIndex:range.location -self.lineWidth 1]])
= {0;
lineWidthnewLine = 0;@"";
self.textViewHeight += height;
NSLog(@"height: %f, width: %f, new Height: %f", height, self.textViewWidth, self.textViewHeight);
[textView setFrame:CGRectMake(self.contentView.frame.origin.x, self.contentView.frame.origin.y, self.textViewWidth, self.textViewHeight)];
self.contentView.frame = textView.frame;
self.frame = textView.frame;
[_editButton setFrame:CGRectMake(self.contentView.frame.size.width - 14, 0, 28, 28)];
//[super setContentView:self.contentView];
[super setFrame:textView.frame];
}
else{
//CGFloat heightnewLine = [textView[newLine stringByAppendingString:text];
self.textlineWidth = [newLine sizeWithFont:textView.font].height;width;
charsAsInt = (int)(textView.textnewLine.length);
CGFloat charWidth = self.lineWidth / charsAsInt;
NSLog(@"height: %f, width: %f, number of characters:
%f", height, lineWidth, charWidth);
if(self.lineWidth >= self.textViewWidth){
self.textViewWidth = self.lineWidth;
[textView setFrame:CGRectMake(self.contentView.frame.origin.x, self.contentView.frame.origin.y, self.lineWidth, self.textViewHeight)];
}
else{
[textView setFrame:CGRectMake(self.contentView.frame.origin.x, self.contentView.frame.origin.y, self.textViewWidth+ charWidthtextViewWidth, self.textViewHeight)];
}
self.contentView.frame = textView.frame;
self.frame = textView.frame;
[_editButton setFrame:CGRectMake(self.contentView.frame.size.width - 14, 0, 28, 28)];
//[super setContentView:self.contentView];
[super setFrame:textView.frame];
}
return YES;
}
Whats happening is We have a multiline UITextView Sticker, so when you press return on your keyboard, you have a new line. Which I'm storing in a new variable now. And the width of whole textVIew is increasing only if width of new line is more than width of old line(self.textViewWidth
)