ios基礎控制項之UITextView

來源:互聯網
上載者:User

ios基礎控制項之UITextView

   多行文本控制項UITextView繼承UIScrollView:UIView控制項,預設是帶有捲軸的。UITextView和UITextField都是文本編輯、顯示控制項,它們功能和行為在很多方面都是相似的。UITextView與UITextField的區別主要在以下三點:   UITextView是一個多行文字框,而UITextField只是單行文字框。   UITextView沒有繼承UIControl控制項,因此不能綁定IBAction事件處理         方法;也不能調用UIControl提供的addTarget:action:forControlEvents:方法來綁定事件處理的方法。   UITextView繼承了UIScrollView,因此具有UIScrollView的功能和行為。

textView=[[UITextView alloc]initWithFrame:CGRectMake(100, 100, 300, 300)];//初始化尺寸
self.textView.textColor=[UIColor blackColor];//字型顏色
self.textView.font=[UIFont fontWithName:@”Arial” size:18.0];//字型類型和大小
[textView.layer setCornerRadius:50];//設定圓角
self.textView.delegate=self;//設定它的委託方法
textView.layer.borderWidth=5;//設定邊框
self.textView.backgroundColor=[UIColor redColor];//背景顏色
self.textView.text=@”“;//顯示內容
self.textView.returnKeyType=UIReturnKeyDefault;//返回鍵的類型
self.textView.keyboardType=UIKeyboardTypeDefault;//鍵盤類型
self.textView.scrollEnabled=YES;//是否可以拖動
self.textView.autocapitalizationType=UIViewAutoresizingFlexibleHeight;//自適應高度
[self.view addSubview:self.textView];
關閉鍵盤可以通過以下幾種方法:
倘若有導覽列的話,在導覽列上添加退出按鈕:
-(void)textViewDidBeginEditing:(UITextView *)textView
{
UIBarButtonItem *done=[[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(leaveEditMode)];
self.navigationItem.rightBarButtonItem=done;
}
-(void)textViewDidEndEditing:(UITextView *)textView
{
self.navigationItem.rightBarButtonItem=nil;
}
-(void)leaveEditMode
{
[self.textView resignFirstResponder];
}

在鍵盤上邊添加一個退出按鈕:
UIToolbar *topView=[[UIToolbar alloc]initWithFrame:CGRectMake(0, 0, 320, 30)];
[topView setBarStyle:UIBarStyleBlack];
UIBarButtonItem * doneButton = [[UIBarButtonItem alloc]initWithTitle:@”Done” style:UIBarButtonItemStyleDone target:self action:@selector(dismissKeyBoard)];

-(IBAction)dismissKeyBoard
{
[textView resignFirstResponder];
}
還可以修改鍵盤上ruturn按鈕的功能:
-(BOOL)textView:(UITextView )textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString )text
{
if ([text isEqualToString:@”\n”]) {
[textView resignFirstResponder];
return NO;
}
return YES;

}

有些時候我們選取UITextView上一部分文字想轉寄,複製或者拷貝。可以在選取欄中增加按鈕:
UIMenuItem *menuItem=[[UIMenuItem alloc]initWithTitle:@”轉寄” action:@selector(changeColor)];
UIMenuController *menu=[UIMenuController sharedMenuController];
[menu setMenuItems:[NSArray arrayWithObject:menuItem]];
-(void)changeColor
{
//實現轉寄,複製或者拷貝具體功能的代碼
}
在日常軟體中我們很多地方都需要為UITextView根據需求擴充它的長度。
下面有三種實現的方法:
-(void)textViewDidChange:(UITextView *)textView
{
if(textView.text.length > 20)//一行最多多少位元組
{
一、
// UIFont *font = [UIFont systemFontOfSize:15];
// CGSize size = [textView.text sizeWithFont:font constrainedToSize:CGSizeMake(300, 1000) lineBreakMode:UILineBreakModeCharacterWrap];
// //BgImage.frame = CGRectMake(0, 202-size.height+15, 320, size.height+28);
// [textView setFrame:CGRectMake(0, 1, 320, size.height+10)];

**二、**    

// CGRect frame = textView.frame;
// CGSize size = [textView.text sizeWithFont:textView.font
// constrainedToSize:CGSizeMake(280, 1000)
// lineBreakMode:UILineBreakModeTailTruncation];
// frame.size.height = size.height > 1 ? size.height + 20 : 64;
// textView.frame = frame;

三、
CGRect frame = textView.frame;
frame.size.height = textView.contentSize.height;
textView.frame = frame;

}

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.