iphone - UITextView como en la vista de respuesta Mail.app
ios6 uiwebview (1)
textViewHolder = [[UIView alloc]initWithFrame:CGRectMake(20, 100, 280, 20)];
simpleLine = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 2, 20)];
simpleLine.backgroundColor = [UIColor blueColor];
[textViewHolder addSubview:simpleLine];
myTextView = [[UITextView alloc]initWithFrame:CGRectMake(20, 0, 240, 24)];
myTextView.delegate = self;
[textViewHolder addSubview:myTextView];
[self.view addSubview:textViewHolder];
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text;
{
int numLines = myTextView.contentSize.height / myTextView.font.lineHeight;
if([text isEqualToString:@"/n"])
numLines++;
if(numLines>1)
{
CGRect frame = textViewHolder.frame;
frame.size.height = 20*(numLines-1);
textViewHolder.frame =frame;
CGRect frame2 = simpleLine.frame;
frame2.size.height = 20*(numLines-1);
simpleLine.frame =frame2;
CGRect frame3 = myTextView.frame;
frame3.size.height = 24*(numLines-1);
myTextView.frame =frame3;
}
return YES;
}
El (numLines-1)
es porque siempre obtuve una línea más de lo que necesitaba. Estoy seguro de que se puede solucionar con un poco de depuración.
La parte [text isEqualToString:@"/n"]
se debe a que también desea incrementar el número de línea si el usuario presiona y baja una línea.
En la aplicación de correo iOS cuando presionas responder, se te presenta una vista de texto como esta. La línea azul vertical sigue creciendo o disminuyendo (según sea el caso) cuando intentas editar la respuesta anterior mientras haces una respuesta en línea o algo así. La parte superior (tu respuesta principal) parece normal. ¿Alguna idea en un nivel realmente superior sobre cómo sacar este tipo de vista de texto?