TextView中的使用技巧

一、新建一个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];
复制代码
最终效果 

131735_hlRQ_735123.png



还有几种也可隐藏键盘的方式 
②用回车键,前提是你的textView中不需要用到回车键
  1. -(BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text {
  2. if ([text isEqualToString:@""]) 

  3. [textView resignFirstResponder]; return NO; 
  4. }
  5. return YES; 
  6. }
复制代码
③触摸空白处隐藏键盘
  1. -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
  2. {
  3.     //隐藏键盘
  4.     [textView resignFirstResponder];
  5. }
复制代码
四、使键盘不挡住输入框      在view中添加一个子view,设置此子view的tag值为1000,在此view上添加一个textView和一个发送按钮,如下图;我们要达到textView的键盘弹出时,整个View往上平移,键盘消失,view往下平移的效果,模拟发送短信的界面。 
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. }
复制代码
效果图:

104545_pBJF_735123.png


104556_cpSI_735123.png


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值