您的位置:首页 > 产品设计 > UI/UE

ios基础控件之UITextView

2015-04-08 16:36 381 查看
多行文本控件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;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: