更改字体大小时,文本在uitextview上隐藏

时间:2010-12-07 04:13:00

标签: iphone iphone-sdk-3.0 uitextview

我现在正在限制uitextfield长度,如下所示:

NSString* newText = [textView.text stringByReplacingCharactersInRange:range withString:text];

CGSize tallerSize = CGSizeMake(textView.frame.size.width-15,textView.frame.size.height*2);

CGSize newSize = [newText sizeWithFont:textView.font constrainedToSize:tallerSize lineBreakMode:
UILineBreakModeWordWrap];

[textView setSelectedRange:range]; 

if ( newSize.height > 325 )
{
  return NO;
}
else if( newSize.height == 325 && [text isEqualToString:@"\n"] )
{
 return NO;
}
else
return YES;

工作正常。但在我的应用程序中,用户可以更改文本大小。如果用户键入10px大小的字体和类型为总长度,然后将其字体大小更改为30,则uitextview会隐藏文本。

如何解决此问题?谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

1)实施UITextFieldDelegate协议

2)实施textField:shouldChangeCharactersInRange:replacementString:方法。

在每个字符点击或前一个字符替换时调用该方法。在这种方法中,你可以这样做:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
    if ([textField.text length] > MAXLENGTH) {
        textField.text = [textField.text substringToIndex:MAXLENGTH-1];
        return NO;
    }
    return YES;
}