zoukankan      html  css  js  c++  java
  • UItextView使用详解

    1.创建并初始化

    创建UITextView的文件,并在.h文件中写入如下代码:

    #import <UIKit/UIKit.h> 

    @interface TextViewController : UIViewController <UITextViewDelegate> 

                  UITextView *textView; 

    @property (nonatomic, retain) UITextView *textView; 

    @end 

    在.m文件中初始化这个textview,写入代码如下:

    self.textView = [[[UITextView alloc] initWithFrame:self.view.frame]autorelease]; //初始化大小并自动释放 

    self.textView.textColor = [UIColor blackColor];//设置textview里面的字体颜色 

    self.textView.font = [UIFont fontWithName:@"Arial" size:18.0];//设置字体名字和字体大小 

    self.textView.delegate = self;//设置它的委托方法 

    self.textView.backgroundColor = [UIColor whiteColor];//设置它的背景颜色 

                  

    self.textView.text = @"Now is the time for all good developers tocome to serve their country.\n\nNow is the time for all good developers to cometo serve their country.";//设置它显示的内容 

    self.textView.returnKeyType = UIReturnKeyDefault;//返回键的类型 

    self.textView.keyboardType = UIKeyboardTypeDefault;//键盘类型 

    self.textView.scrollEnabled = YES;//是否可以拖动 

                  

    self.textView.autoresizingMask = UIViewAutoresizingFlexibleHeight;//自适应高度 

                  

    [self.view addSubview: self.textView];//加入到整个页面中 

    2. UITextView退出键盘的几种方式

    因为你点击UITextView会出现键盘,如果你退出键盘,有如下几种方式:

    (1)如果你程序是有导航条的,可以在导航条上面加多一个Done的按钮,用来退出键盘,当然要先实UITextViewDelegate。

    代码如下:

    - (void)textViewDidBeginEditing:(UITextView *)textView {   

       UIBarButtonItem *done =    [[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(leaveEditMode)] autorelease];   

       self.navigationItem.rightBarButtonItem = done;       

    }   

    - (void)textViewDidEndEditing:(UITextView *)textView {   

        self.navigationItem.rightBarButtonItem = nil;   

    }   

    - (void)leaveEditMode {   

        [self.textView resignFirstResponder];   

    }   

    (2)如果你的textview里不用回车键,可以把回车键当做退出键盘的响应键。

    代码如下:

    #pragma mark - UITextView Delegate Methods   

    -(BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text   

    {   

        if ([text isEqualToString:@"\n"]) {   

            [textView resignFirstResponder];   

            return NO;   

        }   

        return YES;   

    }   

    这样无论你是使用电脑键盘上的回车键还是使用弹出键盘里的return键都可以达到退出键盘的效果。

    (3)还有你也可以自定义其他加载键盘上面用来退出,比如在弹出的键盘上面加一个view来放置退出键盘的Done按钮。

    代码如下:

    UIToolbar * topView = [[UIToolbar alloc]initWithFrame:CGRectMake(0, 0, 320, 30)];   

        [topView setBarStyle:UIBarStyleBlack];   

        UIBarButtonItem * helloButton = [[UIBarButtonItem alloc]initWithTitle:@"Hello" style:UIBarButtonItemStyleBordered target:self action:nil];         

        UIBarButtonItem * btnSpace = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:self action:nil];   

           

        UIBarButtonItem * doneButton = [[UIBarButtonItem alloc]initWithTitle:@"Done" style:UIBarButtonItemStyleDone target:self action:@selector(dismissKeyBoard)];   

        NSArray * buttonsArray = [NSArray arrayWithObjects:helloButton,btnSpace,doneButton,nil];   

        [doneButton release];   

        [btnSpace release];   

        [helloButton release];   

        [topView setItems:buttonsArray];   

        [tvTextView setInputAccessoryView:topView];   

    -(IBAction)dismissKeyBoard   

    {   

        [tvTextView resignFirstResponder];   

    }   

    (4)设置UITextView圆角问题

    做法是在#import QuartzCore/QuartzCore.h 后,便能調用[textView.layer setCornerRadius:10]; 來把UITextView 设定圓角

    (5)UITextView根据文本大小自适应高度

    通过实现文本字数来确定高度,如下:

    NSString * desc = @"Description it is  a test font, and don't become angry for which i use to do here.Now here is a very nice party from american or not!";   

    CGSize  size = [desc sizeWithFont:[UIFont systemFontOfSize:14] constrainedToSize:CGSizeMake(240, 2000) lineBreakMode:UILineBreakModeWordWrap];  

    只有UILabel需要定义的numberoflines为0,即不做行数的限制。如下:

    [label  setNumberOfLines:0];   

    [label  setFrame:CGRectMake(40, 135, 240, size.height+10)];   

    [label setText:desc];  

    (6)UITextView自定选择文字后的菜单

    在ViewDidLoad中加入:

    UIMenuItem *menuItem = [[UIMenuItem alloc]initWithTitle:@"分享到新浪微博" action:@selector(changeColor:)]; 

    UIMenuController *menu = [UIMenuController sharedMenuController]; 

    [menu setMenuItems:[NSArray arrayWithObject:menuItem]]; 

    [menuItem release]; 

    当然上面那个@selector里面的changeColor方法还是自己写吧,也就是说点击了我们自定义的菜单项后会触发的方法。

    然后还得在代码里加上一个方法:

    -(BOOL)canPerformAction:(SEL)action withSender:(id)sender 

    if(action ==@selector(changeColor:)) 

    if(textView.selectedRange.length>0) 

    return YES; 

    return NO; 

  • 相关阅读:
    hdu 5224 Tom and paper 水题
    2015 UESTC 搜索专题N题 韩爷的梦 hash
    2015 UESTC 搜索专题M题 Palindromic String 马拉车算法
    2015 UESTC 搜索专题K题 秋实大哥の恋爱物语 kmp
    2015 UESTC 搜索专题J题 全都是秋实大哥 kmp
    2015 UESTC 搜索专题F题 Eight Puzzle 爆搜
    2015 UESTC 搜索专题E题 吴队长征婚 爆搜
    2015 UESTC 搜索专题D题 基爷的中位数 二分
    2015 UESTC 搜索专题C题 基爷与加法等式 爆搜DFS
    2015 UESTC 搜索专题B题 邱老师降临小行星 记忆化搜索
  • 原文地址:https://www.cnblogs.com/ligun123/p/2255862.html
Copyright © 2011-2022 走看看