美文网首页
UITextView的用法及技巧

UITextView的用法及技巧

作者: 紫云夕月 | 来源:发表于2016-08-30 15:47 被阅读97次

    一、新建一个textView

    //初始化

    UITextView *textView = [[[UITextView alloc] init] autorelease];

    //设置代理 需在interface中声明UITextViewDelegate

    textView.delegate = self;

    //字体大小

    textView.font = [UIFont systemFontOfSize:16];

    //添加滚动区域

    textView.contentInset = UIEdgeInsetsMake(-11, -6, 0, 0);

    //是否可以滚动

    textView.scrollEnabled = NO;

    //获得焦点

    [textView becomeFirstResponder];

    [self.view addSubview:textView];

    二、键盘操作

    //返回键的类型

    textView.returnKeyType = UIReturnKeyDefault;

    //键盘类型

    textView.keyboardType = UIKeyboardTypeDefault;

    三、隐藏键盘的几种方式

    个人还是认为最方便的是在键盘上加上一个ToolBar,在上面加上一个按钮来隐藏键盘

    ①在键盘上加上隐藏按钮

    //定义一个toolBar

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

    //设置style

    [topView setBarStyle:UIBarStyleBlack];

    //定义两个flexibleSpace的button,放在toolBar上,这样完成按钮就会在最右边

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

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

    //定义完成按钮

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

    //在toolBar上加上这些按钮

    NSArray * buttonsArray = [NSArray arrayWithObjects:button1,button2,doneButton,nil];

    [topView setItems:buttonsArray];

    [textView setInputAccessoryView:topView];

    //隐藏键盘

    - (void)resignKeyboard {

    [textView resignFirstResponder];

    }

    ②用回车键,前提是你的textView中不需要用到回车键

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

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

    [textView resignFirstResponder]; return NO;

    }

    return YES;

    }

    ③触摸空白处隐藏键盘

    -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event

    {

    //隐藏键盘

    [textView resignFirstResponder];

    }

    四、使键盘不挡住输入框

    在view中添加一个子view,设置此子view的tag值为1000,在此view上添加一个textView和一个发送按钮,如下图;我们要达到textView的键盘弹出时,整个View往上平移,键盘消失,view往下平移的效果,模拟发送短信的界面。

    设置textView圆角

    //设置textView圆角

    [self.textView.layer setCornerRadius:10];

    ①、在viewWillAppear中添加键盘监听事件

    //添加键盘的监听事件

    //注册通知,监听键盘弹出事件

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardDidShow:) name:UIKeyboardDidShowNotification object:nil];

    //注册通知,监听键盘消失事件

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardDidHidden) name:UIKeyboardDidHideNotification object:nil];

    ②、完成①selector中键盘弹出keyboardDidShow:和消失keyboardDidHidden方法

    在.m文件#import后面添加

    //动画时间

    #define kAnimationDuration 0.2

    //view高度

    #define kViewHeight 56

    键盘出现

    // 键盘弹出时

    -(void)keyboardDidShow:(NSNotification *)notification

    {

    //获取键盘高度

    NSValue *keyboardObject = [[notification userInfo] objectForKey:UIKeyboardFrameEndUserInfoKey];

    CGRect keyboardRect;

    [keyboardObject getValue:&keyboardRect];

    //调整放置有textView的view的位置

    //设置动画

    [UIView beginAnimations:nil context:nil];

    //定义动画时间

    [UIView setAnimationDuration:kAnimationDuration];

    //设置view的frame,往上平移

    [(UIView *)[self.view viewWithTag:1000] setFrame:CGRectMake(0, self.view.frame.size.height-keyboardRect.size.height-kViewHeight, 320, kViewHeight)];

    [UIView commitAnimations];

    }

    键盘消失

    //键盘消失时

    -(void)keyboardDidHidden

    {

    //定义动画

    [UIView beginAnimations:nil context:nil];

    [UIView setAnimationDuration:kAnimationDuration];

    //设置view的frame,往下平移

    [(UIView *)[self.view viewWithTag:1000] setFrame:CGRectMake(0, self.view.frame.size.height-kViewHeight, 320, kViewHeight)];

    [UIView commitAnimations];

    }

    相关文章

      网友评论

          本文标题:UITextView的用法及技巧

          本文链接:https://www.haomeiwen.com/subject/miofettx.html