年年有"余"

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2786|回复: 0

关于UITextfield弹出键盘解决方案

[复制链接]
  • TA的每日心情

    2024-10-15 10:05
  • 签到天数: 372 天

    [LV.9]以坛为家II

    发表于 2014-5-18 22:12:56 | 显示全部楼层 |阅读模式
    解决的问题 :当你点击一个UITextfield时,不想让其弹出键盘,如果你觉得不就是取消其第一响应者嘛,resignRespond一下不就行了嘛,确实,如果你只是在其编辑完成后让其键盘消失,那这个就够了,但是如果你想在编辑前让其消失呢?阐述下自己遇到的情况先:就是需要做一个地区的输入框(是一个UITextfield),但可以分自动获取和手动输入,当你第一次点击时,需要弹出block让你选择你输入类型,点击的实现是在UITextfield上添加addTarget一个UIControlEventEditingDidBegin类型监听。当然,接下来的操作是如果你直接点击编辑框是没有问题的,但是如果你点击了另外一个UITextfield后,已经弹出了键盘(ios中连续点击的是两个UITextfield控件,键盘是不会消失的,所以你也不会看到切换输入框时键盘连续弹入弹出),此时你若直接点击地区那个输入框,那么你的问题就来了,此时的键盘并不会消失,一种可能是你的弹出UI覆盖在键盘上面或者你的弹出UI被键盘覆盖。

    解决方法: 为了更好了了解解决的整个思路,同时避免被网上各种无厘头答案所误导,先来看下所需要了解的相关知识。

    UITextfield上的相关方法属性:

    enable:这是个继承自UIControl的属性,默认是YES,注释是 if NO, ignores touch events and subclasses may draw differently,也就是说当你设置为NO时,你添加的所有监听事件和在上面添加的属性都会失效。

    editing:这是自带的属性,注释是 A Boolean value indicating whether the text field is currently in edit mode,也就是YES和NO对应着上面的输入指示焦点。

    addTarget上的4个点击监听类型,  

    UIControlEventEditingDidBegin: 当文本控件中开始编辑时发送通知。

        UIControlEventEditingChanged: 当控件的值发生改变时,发送通知

        UIControlEventEditingDidEnd :  当文本控件中编辑结束时发送通知。

        UIControlEventEditingDidEndOnExit: 当文本控件内通过按下回车键(或等价行为)结束编辑时,发送通知。

              如果你想对上面几个点击事件进行监听,你可以去实现UITextfieldDelegate的相应方法。

    下面进入解决:

    这个也可以分几种情况:

    1.你的页面所有的UITextfield都需要在点击时消除掉键盘先的话,你可以直接用UITextfield的addTarget方法监听,代码如下:

    [_mainView.sexInfoView.tailTextField addTarget:self action:@selector(setSex:) forControlEvents:UIControlEventEditingDidBegin];

    同时,你实现代理方法 :

    - (BOOL)textFieldShouldBeginEditing:(UITextField *)textField{

    //    此处加入你想要执行的代码

        return  NO;

    }

       2.你的页面只有部分UITextfield需要,那么,此时你就不能通过UITextfield的监听方法了,那么你可以怎么做呢?你可以直接把监听事件改用gesture的监听就行了嘛,具体代码如下:

      UITapGestureRecognizer *sexTap=[[ UITapGestureRecognizer alloc ] initWithTarget : self action : @selector (setSex:)];

        [ _mainView . sexInfoView . tailTextField addGestureRecognizer :sexTap];

    总结: 或许,看到最后你觉得其实也挺简单的嘛,可是如果你上网搜下,你就会发现这个问题困扰了很多人,而且很多的答案误导。。关于文中提到的UIControl,想要了解的话可以看下往期的博客,想要更加了解直接前往ios官网。
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    手机版|小黑屋|Archiver|iOS开发笔记 ( 湘ICP备14010846号 )

    GMT+8, 2024-11-22 03:06 , Processed in 0.051724 second(s), 23 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表