UITextView文本視圖相比與UITextField直觀的區別就是UITextView能夠輸入多行文字而且能夠滾動顯示瀏覽全文。常見UITextView使用在APP的軟件簡介、內容詳情顯示、小說閱讀顯示、發表空間內容輸入、說說文本框、評論文本框等。字體
UITextView的使用有它自己的代理方法,也有繼承於父類的方法。自己的方法有從開始編輯到結束編輯的整個過程的監聽,繼承的方法主要是繼承於UIScrollView的方法,由於關於滾動的控制都屬於UIScrollView的。spa
經常使用屬性設置:代理
UITextView *textView = [[UITextView alloc]initWithFrame:CGRectMake(20, 10, 280, 80)];繼承
textView.backgroundColor = [UIColor grayColor]; //背景色it
textView.scrollEnabled = YES; //當文字超出視圖的邊框時是否容許滑動,默認YESio
textView.editable = YES; //是否容許編輯內容,默認YEStable
textView.delegate = self;軟件
textView.font = [UIFont fontWithName:@"Arial" size:18.0]; //設置字體數據類型
textView.returnKeyType = UIReturnKeyNext; //return鍵的類型scroll
textView.keyboardType = UIKeyboardAppearanceAlert; //鍵盤的類型
textView.textAlignment = NSTextAlignmentLeft; //文本顯示內容默認居左
textView.dataDetectorTypes = UIDataDetectorTypePhoneNumber; //顯示數據類型的連接模式(如電話號碼,網址,地址等)
textView.textColor = [UIColor blackColor];
textView.text = @"IP / IQ / IC 卡,統統告訴我密碼";
[self.view addSubview:textView];
UITextView的代理方法以下:
//將要開始編輯
- (BOOL)textViewShouldBeginEditing:(UITextView *)textView;
//將要結束編輯
- (BOOL)textViewShouldEndEditing:(UITextView *)textView;
//開始編輯
- (void)textViewDidBeginEditing:(UITextView *)textView;
//結束編輯
- (void)textViewDidEndEditing:(UITextView *)textView;
//內容將要發生改變編輯
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString*)text;
//內容發生改變編輯
- (void)textViewDidChange:(UITextView *)textView;
//焦點發生改變
- (void)textViewDidChangeSelection:(UITextView *)textView;
有時候咱們要控件自適應輸入的文本的內容的高度,只要在textViewDidChange的代理方法中加入調整控件大小的代理便可
- (void)textViewDidChange:(UITextView *)textView{
//計算文本的高度
CGSize constraintSize;
constraintSize.width = textView.frame.size.width-16;
constraintSize.height = MAXFLOAT;
CGSize sizeFrame =[textView.text sizeWithFont:textView.font constrainedToSize:constraintSize lineBreakMode:UILineBreakModeWordWrap];
//從新調整textView的高度
textView.frame = CGRectMake(textView.frame.origin.x,textView.frame.origin.y,textView.frame.size.width,sizeFrame.height+5);
}
控制輸入文字的長度和內容,可通調用如下代理方法實現
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString*)text
{
if (range.location>=100)
{
//控制輸入文本的長度
return NO;
}
if ([text isEqualToString:@"\n"]) {
//禁止輸入換行
return NO;
}
else
{
return YES;
}
}