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

UITextView的使用

2016-06-14 13:08 537 查看
1.    一些属性设置
 
//初始化并定义大小   
 UITextView *textview = [[UITextViewalloc]
initWithFrame:CGRectMake(20,
10,
280, 30)];
 
textview.backgroundColor=[UIColor
whiteColor];
//背景色
 
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详解";//设置显示的文本内容
 
//将textview添加到view中
[self.viewaddSubview:textview];

 

//添加滚动区域
 _textView.contentInset =UIEdgeInsetsMake(-11, -6, 0, 0);//
这样设置以后会紧贴左边

 

//获得焦点
[_textViewbecomeFirstResponder];
设置以后启动直接弹出键盘
 
//是否显示滚动条
_textView.showsVerticalScrollIndicator =
YES;
 
// 自适应高度
_textView.autoresizingMask =
UIViewAutoresizingFlexibleHeight;
 
//设置其为圆角
[_textView.layer
setCornerRadius:10];
 
2. 代理方法
UITextView的代理方法如下:
//将要开始编辑
- (BOOL)textViewShouldBeginEditing:(UITextView *)textView;
 
//将要结束编辑
- (BOOL)textViewShouldEndEditing:(UITextView *)textView;
 
//开始编辑
- (void)textViewDidBeginEditing:(UITextView *)textView;
 
//结束编辑
- (void)textViewDidEndEditing:(UITextView *)textView;
 
//内容将要发生改变编辑
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)rangereplacementText:(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.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 *)textView shouldChangeTextInRange:(NSRange)range
replacementText:(NSString *)text
{
    if (range.location>=100)
    {
        //控制输入文本的长度
        return 
NO;
    }
if ([text
isEqualToString:@"\n"])

{
        //禁止输入换行
        returnNO;
    }
    else
    {
        returnYES;
    }
}
 
3.退出键盘
方法1:如果你程序是有导航条的,可以在导航条上面加多一个Done的按钮,用来退出键盘,当然要先实UITextViewDelegate。
使用代理方法
- (void)textViewDidBeginEditing:(UITextView *)textView
{
    //键盘弹出开始进行编辑的时候才出现这个按钮
    UIBarButtonItem *done = [[[UIBarButtonItemalloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:selfaction:@selector(leaveEditMode)] autorelease];
   _rootView.navigationItem.rightBarButtonItem= done;
}
 
- (void)leaveEditMode
{
    //退出键盘,第一响应者辞职
    [_textView resignFirstResponder];
}
 
- (void)textViewDidEndEditing:(UITextView *)textView
{
    //结束编辑时清空这个按钮
    _rootView.navigationItem.rightBarButtonItem= nil;
    //这里不能直接写_navigationItem,这样写的话相当于是说self的属性,即viewconotroller的,但这个done按钮不是要加到那上边的,而是加到rootView上的
}
 
方法2:如果你的textview里不用回车键,可以把回车键当做退出键盘的响应键
-(BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)rangereplacementText:(NSString *)text
{
    if ([text isEqualToString:@"\n"])
    {
        [_textView resignFirstResponder];
        return NO;
    }
    else
    {
        return YES;
    }
}
 
方法3:
//在弹出的键盘上加一个view来放置两个按键,其中一个done按钮就用于键盘退出
    //创建一个UIToolbar
    UIToolbar *topView = [[[UIToolbar
alloc] initWithFrame:CGRectMake(0,
0, 320,
30)] autorelease];
    //设置UIToolbar样式
    [topView setBarStyle:UIBarStyleBlack];
    //创建并初始化UIToolbar上面的按钮
    UIBarButtonItem *helloButton = [[[UIBarButtonItem
alloc] initWithTitle:@"Hello"
style:UIBarButtonItemStylePlain
target:self
action:nil]
autorelease];
    UIBarButtonItem *btnSpace = [[UIBarButtonItem
alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace
target:self
action:nil];
    UIBarButtonItem *doneButton = [[[UIBarButtonItem
alloc] initWithTitle:@"Done"
style:UIBarButtonItemStyleDone
target:self
action:@selector(dismissKeyBoard)]
autorelease];
    //组成按钮数组
    NSArray *buttonsArray = [NSArray
arrayWithObjects:helloButton,btnSpace,doneButton,nil];
    //设置数组到UIToolbar中
    [topView setItems:buttonsArray];
    //加到键盘上
    //在使用UITextView和UITextField的时候,可以通过它们的inputAccessoryView属性给输入时呼出的键盘加一个附属视图,通常是UIToolBar,用于回收键盘。
[_textView
setInputAccessoryView:topView];
 
- (void)dismissKeyBoard
{
    [_textView
resignFirstResponder];
}
 
4.
// 自定义选择文字后的菜单
    UIMenuItem *menuItem = [[[UIMenuItem
alloc] initWithTitle:@"分享到新浪微博"
action:@selector(changeColor)]
autorelease];
    UIMenuController *menu = [UIMenuController
sharedMenuController];
 
    [menu setMenuItems:[NSArray
arrayWithObject:menuItem]];
 
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  iOS textview