textView的用法及技巧

转自:http://bbs.9ria.com/thread-244445-1-1.html

一、新建一个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];

二、键盘操作

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

  3. //键盘类型
  4. textView.keyboardType = UIKeyboardTypeDefault;
复制代码

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

  1. //定义一个toolBar
  2. UIToolbar * topView = [[UIToolbar alloc]initWithFrame:CGRectMake(0, 0, 320, 30)];

  3. //设置style
  4. [topView setBarStyle:UIBarStyleBlack];

  5. //定义两个flexibleSpace的button,放在toolBar上,这样完成按钮就会在最右边
  6. UIBarButtonItem * button1 =[[UIBarButtonItem  alloc]initWithBarButtonSystemItem:                                        UIBarButtonSystemItemFlexibleSpace target:self action:nil];

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

  8. //定义完成按钮
  9. UIBarButtonItem * doneButton = [[UIBarButtonItem alloc]initWithTitle:@"完成" style:UIBarButtonItemStyleDone  target:self action:@selector(resignKeyboard)];
  10.    
  11. //在toolBar上加上这些按钮
  12. NSArray * buttonsArray = [NSArray arrayWithObjects:button1,button2,doneButton,nil];     
  13. [topView setItems:buttonsArray];

  14. [textView setInputAccessoryView:topView];
复制代码

最终效果

<ignore_js_op> 131735_hlRQ_735123.png

 

 


还有几种也可隐藏键盘的方式
②用回车键,前提是你的textView中不需要用到回车键

  1. -(BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text {
  2. if ([text isEqualToString:@""])
  3. {
  4. [textView resignFirstResponder]; return NO;
  5. }
  6. return YES;
  7. }
复制代码

③触摸空白处隐藏键盘

  1. -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
  2. {
  3.     //隐藏键盘
  4.     [textView resignFirstResponder];
  5. }
复制代码

四、 使键盘不挡住输入框      在view中添加一个子view,设置此子view的tag值为1000,在此view上添加一个textView和一个发送按钮,如下图;我们要达到 textView的键盘弹出时,整个View往上平移,键盘消失,view往下平移的效果,模拟发送短信的界面。
<ignore_js_op> 100937_IaJo_735123.png
设置textView圆角

  1. //设置textView圆角
  2. [self.textView.layer setCornerRadius:10];
复制代码

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

  1. //添加键盘的监听事件
  2.    
  3.     //注册通知,监听键盘弹出事件
  4.     [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardDidShow:) name:UIKeyboardDidShowNotification object:nil];
  5.    
  6.     //注册通知,监听键盘消失事件
  7.     [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardDidHidden) name:UIKeyboardDidHideNotification object:nil];
复制代码

②、完成①selector中键盘弹出keyboardDidShow:和消失keyboardDidHidden方法      在.m文件#import后面添加

  1. //动画时间
  2. #define kAnimationDuration 0.2
  3. //view高度
  4. #define kViewHeight 56
复制代码

键盘出现

  1. // 键盘弹出时
  2. -(void)keyboardDidShow:(NSNotification *)notification
  3. {
  4.    
  5.     //获取键盘高度
  6.     NSValue *keyboardObject = [[notification userInfo] objectForKey:UIKeyboardFrameEndUserInfoKey];
  7.    
  8.     CGRect keyboardRect;
  9.    
  10.     [keyboardObject getValue:&keyboardRect];
  11.    
  12.     //调整放置有textView的view的位置
  13.    
  14.        //设置动画
  15.     [UIView beginAnimations:nil context:nil];
  16.    
  17.        //定义动画时间
  18.     [UIView setAnimationDuration:kAnimationDuration];
  19.    
  20.        //设置view的frame,往上平移
  21.     [(UIView *)[self.view viewWithTag:1000] setFrame:CGRectMake(0, self.view.frame.size.height-keyboardRect.size.height-kViewHeight, 320, kViewHeight)];
  22.    
  23.     [UIView commitAnimations];
  24.    
  25. }
复制代码

键盘消失

  1. //键盘消失时
  2. -(void)keyboardDidHidden
  3. {
  4.     //定义动画
  5.     [UIView beginAnimations:nil context:nil];
  6.     [UIView setAnimationDuration:kAnimationDuration];
  7.     //设置view的frame,往下平移
  8.     [(UIView *)[self.view viewWithTag:1000] setFrame:CGRectMake(0, self.view.frame.size.height-kViewHeight, 320, kViewHeight)];
  9.     [UIView commitAnimations];
  10. }
复制代码

效果图:

<ignore_js_op> 104545_pBJF_735123.png

 

 

<ignore_js_op> 104556_cpSI_735123.png

 

posted @ 2016-06-07 09:15  飞羽孟德  阅读(484)  评论(0编辑  收藏  举报