Попытка создать большое текстовое поле фиксированного размера.
Эта проблема очень похожа на проблему ограничения 140 символов, но вместо того, чтобы прекратить вводить 140 символов, я хочу прекратить печатать, когда крайРамка textView достигается, а не расширяется ниже в пропасть.Вот что я получил за метод делегата.Кажется, он всегда немного выключен.Есть мысли?
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
{
BOOL edgeBump = NO;
CGSize constraint = textView.frame.size;
CGSize size = [[textView.text stringByAppendingString:text] sizeWithFont:textView.font
constrainedToSize:constraint
lineBreakMode:UILineBreakModeWordWrap];
CGFloat height = size.height;
if (height > textView.frame.size.height) {
edgeBump = YES;
}
if([text isEqualToString:@"\b"]){
return YES;
} else if(edgeBump){
NSLog(@"EDGEBUMP!");
return NO;
}
return YES;
}
РЕДАКТИРОВАТЬ: Согласно предложению Макса ниже, вот код, который работает (заметьте, однако, что автозамена и вырезать здесь не работают):
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
{
CGSize constraint = textView.frame.size;
NSString *whatWasThereBefore = textView.text;
textView.text = [textView.text stringByReplacingCharactersInRange:range withString:text];
if (textView.contentSize.height >= constraint.height) {
textView.text = whatWasThereBefore;
}
return NO;
}