美文网首页
关于IOS键盘的一些调用心得与坑

关于IOS键盘的一些调用心得与坑

作者: 笑望書 | 来源:发表于2017-06-20 23:48 被阅读0次

    以下是关于自己在项目中关于调用IOS键盘以及监听个别按键时的一些心得:

    一、键盘打开方式

           UITextField *field = [[UITextField alloc]  initWithFrame:CGRectFrame(x,y,width,height)];                                               [field becomeFirstResponder];

    键盘的调用可以通过调用becomeFirstResponder使得field成为第一响应者,从而调出键盘;

    二、在键盘打开以及关闭过程中,可以添加通知事件来处理某些工作

    //键盘显示通知,会调用selector参数中对应的keyboardWillShow(自定义的)函数

        [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:)                                name:UIKeyboardWillShowNotification object:nil];

    //键盘隐藏通知,会调用selector中对应的keyboardWillHide(自定义的)函数

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillHide:) name:UIKeyboardWillHideNotification object:nil];

    一般可以在键盘显隐时对对应的view进行布局修改,防止键盘遮挡等问题

    三、避免使用第三方输入法时,键盘显示时会出现调用三次二中使用的keyboardWillShow函数

          可以设置一个全局整型参数,第一次调用时keyboardWillShow中可计为1,后两次调用时则根据这个参数来判断是否执行相关代码,而在键盘隐藏时或其他需求的地方重置参数为0即可。

    四、UITextField内容监听方法

          A.UITextField *textField = [[UITextField alloc] initWithFrame:rect];

    [textField addTarget:self action:@selector(clickReturnKeyDone) forControlEvents:UIControlEventEditingDidEndOnExit];//编辑返回、go、return等操作

    [textField addTarget:self action:@selector(textChangeBegin) forControlEvents:UIControlEventEditingDidBegin];//编辑开始事件

    [textField addTarget:self action:@selector(textChange) forControlEvents:UIControlEventEditingChanged];//编辑改变事件

    根据指定的UIControlEvent事件去调用指定的函数,执行需要的操作。

           B.也可通过实现UITextFieldDelegate中的函数来执行某些操作

              首先在.h文件中添加对应的UITextFieldDelegate,其次给对应的UITextField文本框添加协议

              textField.delegate = self;  具体的事件可自行查看UITextFieldDelegate协议中的函数实现

    五、监听键盘上的删除以及回车按键

              网上有建议自定义UITextField的,然后重写其中的deleteBack函数来监听对应的删除按键,下面我是通过UITextFieldDelegate协议中的一个函数来监听的:

    //这个函数时文本框改变时调用的方法,其中的string参数是用户本次输入到文本框的字符串

          -(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string

    {

          if ([textField.text isEqualToString:@""]) { //这个时候得到的还是文本框未改变时的字符串

              if ([string length] < 1 ) {

                  //如果用户点击的删除按键,那么string是空的,没有长度

              }

               if ([string length]>0) {

                    int result = [string characterAtIndex:0];

                     if (result == 10) {

                              //用户点击了回车

                     }

                   i f (result == 32) {

                      //用户点击了空格

                   }

     }

    }

    return YES;

    }

    以上是本人在使用IOS键盘时的一些心得,后续有新的内容会持续更新,如有疑问或者错误的地方欢迎指正,谢谢

    相关文章

      网友评论

          本文标题:关于IOS键盘的一些调用心得与坑

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