//初始化并定義大小
UITextView*textview = [[UITextViewalloc]initWithFrame:CGRectMake(20,10,280,30)];
textview.backgroundColor=[UIColorwhiteColor];//背景色
textview.scrollEnabled=NO;//當文字超過視圖的邊框時是否允許滑動,默認為“YES”
textview.editable=YES;//是否允許編輯內容,默認為“YES”
textview.delegate=self;//設置代理方法的實現類
textview.font=[UIFontfontWithName:@"Arial"size:18.0];//設置字體名字和字體大小;
textview.returnKeyType=UIReturnKeyDefault;//return鍵的類型
textview.keyboardType=UIKeyboardTypeDefault;//鍵盤類型
textview.textAlignment=NSTextAlignmentLeft;//文本顯示的位置默認為居左
textview.dataDetectorTypes=UIDataDetectorTypeAll;//顯示數據類型的連接模式(如電話號碼、網址、地址等)
textview.textColor= [UIColorblackColor];
textview.text=@"UITextView詳解";//設置顯示的文本內容
[self.viewaddSubview:textview];
UITextView的代理方法如下:
//將要開始編輯
- (BOOL)textViewShouldBeginEditing:(UITextView*)textView;
//將要結束編輯
- (BOOL)textViewShouldEndEditing:(UITextView*)textView;
//開始編輯
- (void)textViewDidBeginEditing:(UITextView*)textView;
//結束編輯
- (void)textViewDidEndEditing:(UITextView*)textView;
//內容將要發生改變編輯
- (BOOL)textView:(UITextView*)textViewshouldChangeTextInRange:(NSRange)range replacementText:(NSString*)text;
//內容發生改變編輯
- (void)textViewDidChange:(UITextView*)textView;
//焦點發生改變
- (void)textViewDidChangeSelection:(UITextView*)textView;
有時候我們要控件自適應輸入的文本的內容的高度,只要在textViewDidChange的代理方法中加入調整控件大小的代理即可
-(void)textViewDidChange:(UITextView*)textView{
//計算文本的高度
CGSizeconstraintSize;
constraintSize.width= textView.frame.size.width-16;
constraintSize.height=MAXFLOAT;
CGSizesizeFrame =[textView.textsizeWithFont: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*)textViewshouldChangeTextInRange:(NSRange)range replacementText:(NSString*)text
{
if(range.location>=100)
{
//控制輸入文本的長度
returnNO;
}
if([textisEqualToString:@"\n"]) {
//禁止輸入換行
returnNO;
}else{
returnYES;
}
}
UITextView退出鍵盤的幾種方式
因為iphone的軟鍵盤沒有自帶的退鍵盤鍵,所以要實現退出鍵盤需要自己實現,有如下幾種方式:
1)如果你程序是有導航條的,可以在導航條上面加多一個Done的按鈕,用來退出鍵盤,當然要先實UITextViewDelegate。
- (void)textViewDidBeginEditing:(UITextView*)textView {
UIBarButtonItem*done =[[UIBarButtonItemalloc]initWithBarButtonSystemItem:UIBarButtonSystemItemDone
target:self
action:@selector(dismissKeyBoard)];
self.navigationItem.rightBarButtonItem= done;
[donerelease];
done=nil;
}
-(void)textViewDidEndEditing:(UITextView*)textView {
self.navigationItem.rightBarButtonItem=nil;
}
-(void)dismissKeyBoard{
[self.textViewresignFirstResponder];
}
2)如果你的textview里不用回車鍵,可以把回車鍵當做退出鍵盤的響應鍵。
代碼如下:
-(BOOL)textView:(UITextView*)textViewshouldChangeTextInRange:(NSRange)range replacementText:(NSString*)text
{
if([textisEqualToString:@"\n"]) {
[textViewresignFirstResponder];
returnNO;
}
return YES;
}
3)還有你也可以自定義其他加載鍵盤上面用來退出,比如在彈出的鍵盤上面加一個view來放置退出鍵盤的Done按鈕。
代碼如下:
UIToolbar* topView = [[UIToolbaralloc]initWithFrame:CGRectMake(0,0,320,30)];
[topViewsetBarStyle:UIBarStyleBlack];
UIBarButtonItem*btnSpace = [[UIBarButtonItemalloc]initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace
target:self
action:nil];
UIBarButtonItem*doneButton =
[[UIBarButtonItemalloc]initWithTitle:@"Done"
style:UIBarButtonItemStyleDone
target:self
action:@selector(dismissKeyBoard)];
NSArray* buttonsArray =@[btnSpace,doneButton];;
[doneButtonrelease];
[btnSpacerelease];
[topViewsetItems:buttonsArray];
[textView setInputAccessoryView:topView];//當文本輸入框加上topView
[topViewrelease];
topView =nil;
-(IBAction)dismissKeyBoard
{
[tvTextView resignFirstResponder];
}
摘自:風之語2018的博客