zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    [Java] 理解JVM之二:类加载步骤及内存分配
    [Java] 理解JVM之三:垃圾回收机制
    [Java] I/O底层原理之一:字符流、字节流及其源码分析
    [Java] 集合框架原理之二:锁、原子更新、线程池及并发集合
    [Web] Web请求过程之一:HTTP
    [Web] Web请求过程之二:DNS 域名解析
    [Java] 集合框架原理之一:基本结构与源码分析
    Hello World
    c++数据结构图论创建一个导航图,实现基本功能
    jquery1.9: unrecognized expression: a[@href=
  • 原文地址:https://www.cnblogs.com/feiyu-mdm/p/5565859.html
Copyright © 2011-2022 走看看