第一步:
在你的textfield类中的.h文件中写入委托声明

#import <UIKit/UIKit.h>
@interface ViewController1:UIViewController<UITextFieldDelegate>

@end

第二步:然后再去你的.m文件中进行实现

    //密码文本框
    UITextField *passtext=[[UITextField alloc]initWithFrame:CGRectMake(50, 300, 180, 40)];
    passtext.backgroundColor=[UIColor cyanColor];
    passtext.clearButtonMode=UITextFieldViewModeWhileEditing;
    passtext.borderStyle=UITextBorderStyleBezel;
    passtext.secureTextEntry=YES;
   
passtext.placeholder=@"write passwords";
    passtext.delegate=self;
    [self.view addSubview:passtext];

首先在你的textfiled写入  (ViewDidLoad内)

   passtext.delegate=self;

 第三步:然后再在ViewDidLoad外写你的实现方法

- (BOOL)textFieldShouldReturn:(UITextField *)textField

{

    [text resignFirstResponder];    //主要是[receiver resignFirstResponder]在哪调用就能把receiver对应的键盘往下收

    return YES;

}

就可以啦

然后再给大家附上
我先后用过4种方法,来处理键盘消失的问题。
1. 通过UITextFiledDelegate,来释放第一响应者 (resignFirstResponder); 这种通过delegate释放键盘的代码如下:
 - (BOOL)textFieldShouldReturn:(UITextField *)textField { [textField resignFirstResponder]; return YES;}以下3种方法是通过 响应事件来处理的:
2. 通过 Done键的 DidonExit method,来 resignFirstResponder;

3.  点击编辑框的背景图,让键盘消失。 方法: 将背景view 设为: UIControll。 UIView本身不能响应事件,而UIcontroll 是可以响应事件的。 UIControll 继承于 UIView;  通过调用 UIControll的 Touch Down 事件,让键盘消失;

4. 放置一个 UIButton ,将这个UIButton 布满全屏,当点击非编辑区域时,其实就是点击这个巨型的Button。 在这个button 事件中, resignFirstResponder 即可。 

- (IBAction)backgroundTap:(id)sender {    [self.nameTextField resignFirstResponder];    [self.passwordTextField resignFirstResponder];}说明: 这个method 模拟了用户的两种行为: 1. 点击keyboard上的 done 键 ,让键盘消失; 2. 点击 编辑框以外的区域, 让键盘消失。特别说明一点:  通过布满全屏的Button ,这种方法要求: 这个巨型的Button 一定要放在最底层。 否则的话,编辑框将无法接受输入的事件。方案点评:UITextFieldDelegate 和 UIControll 方案,处理键盘消失问题,这是一种大智慧。  而巨型 Button  和 didOnExit 方法,虽然也能用,但从软件编程思想上看,只能算是一种小聪明罢了。 小结:只要有输入框存在,就得处理如何让键盘消失的问题。 当然,你可以仅仅处理 点击“done”按钮,来让键盘消失。  但为了让用户有更好的体验, 需要同时处理 非编辑框的区域的事件响应。

1.最简单粗暴的,只要在 任何 UIView子类结束编辑即可: 
在一个VIewController收起键盘的方法如下: 
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 

    [self.view endEditing:YES]; 

2.释放编辑框TextField(TextView同理)的第一响应者即可,实现手段很多: 
  
(1) TextField点击Reture收起键盘 
步骤:实现委托协议,释放第一响应者 
self.textField.delegate=self; 
-(BOOL)textFieldShouldReturn:(UITextField *)textField 

      
    [self.textField resignFirstResponder]; 
   return YES; 

(2)在ViewController的self.view上添加一个tap单击手势,当点击空白的时候,释放 输入框的第一响应者即可 
  
(3)背景设置一个 UIButton,给button一个回调,当点击按钮的时候释放键盘的第一响应者即可,同上

1.最简单粗暴的,只要在 任何 UIView子类结束编辑即可: 
在一个VIewController收起键盘的方法如下: 
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 

    [self.view endEditing:YES]; 

2.释放编辑框TextField(TextView同理)的第一响应者即可,实现手段很多: 
  
(1) TextField点击Reture收起键盘 
步骤:实现委托协议,释放第一响应者 
self.textField.delegate=self; 
-(BOOL)textFieldShouldReturn:(UITextField *)textField 

      
    [self.textField resignFirstResponder]; 
   return YES; 

(2)在ViewController的self.view上添加一个tap单击手势,当点击空白的时候,释放 输入框的第一响应者即可 
  
(3)背景设置一个 UIButton,给button一个回调,当点击按钮的时候释放键盘的第一响应者即可,同上

 

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField{ 
    //返回一个BOOL值,指定是否循序文本字段开始编辑 
    return YES; 

 
- (void)textFieldDidBeginEditing:(UITextField *)textField{
    //开始编辑时触发,文本字段将成为first responder
}
 
- (BOOL)textFieldShouldEndEditing:(UITextField *)textField{
    //返回BOOL值,指定是否允许文本字段结束编辑,当编辑结束,文本字段会让出first responder
    //要想在用户结束编辑时阻止文本字段消失,可以返回NO
    //这对一些文本字段必须始终保持活跃状态的程序很有用,比如即时消息
    return NO;
}
 
- (BOOL)textField:(UITextField*)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
    //当用户使用自动更正功能,把输入的文字修改为推荐的文字时,就会调用这个方法。
    //这对于想要加入撤销选项的应用程序特别有用
    //可以跟踪字段内所做的最后一次修改,也可以对所有编辑做日志记录,用作审计用途。  
    //要防止文字被改变可以返回NO
    //这个方法的参数中有一个NSRange对象,指明了被改变文字的位置,建议修改的文本也在其中
    return YES;
}
- (BOOL)textFieldShouldClear:(UITextField *)textField{
    //返回一个BOOL值指明是否允许根据用户请求清除内容
    //可以设置在特定条件下才允许清除内容
    return YES;
}
-(BOOL)textFieldShouldReturn:(UITextField *)textField{
    //返回一个BOOL值,指明是否允许在按下回车键时结束编辑
    //如果允许要调用resignFirstResponder 方法,这回导致结束编辑,而键盘会被收起
    [textField resignFirstResponder];//查一下resign这个单词的意思就明白这个方法了
    return YES;
}

转载于:https://www.cnblogs.com/zhuhengjie/p/5966954.html

解决键盘老是不消失实现delegate委托实例化过程相关推荐

  1. UITextField 文本字段控件 -- IOS (解决键盘遮住View及密文設定的问题)(实例)

    进入本文之前建议你认真读一读我的另一篇博文:UIControl IOS控件编程 这样会起到事半功倍效果. 为什么要看另一篇关于UIControl的文章呢?因为UITextField继承自UIContr ...

  2. 仿QQ空间登录,解决键盘挡住输入框的问题

    我们在开发Android应用中,登录和注册界面是少不了的,往往在做登录注册的时候如果给界面加一个LOGO,就有可能把用户名和密码框放在手机屏幕的中间或底部,这样当软键盘弹出的时候,就有可能挡住输入框( ...

  3. Delegate委托的使用

    Delegate委托的使用 委托的说明 委托(delegate)是Cocoa的一个术语,表示将一个对象的部分功能转交给另一个对象. 比如对象A希望对象B知道将要发生或已经发生某件事情,对象A可以把对象 ...

  4. Strategy模式与Delegate委托

    Strategy模式是对算法的封装.即使是一个计算行为,如果其实现有其多样性,为达到易扩展的目的,我们也有必要将其抽象出来,以接口的形式来定义.由于充分利用了面向对象的多态性,在调用该行为时,其具体的 ...

  5. linux操作系统重启后 解决nginx的pid消失问题

    linux操作系统重启后 解决nginx的pid消失问题 参考文章: (1)linux操作系统重启后 解决nginx的pid消失问题 (2)https://www.cnblogs.com/cyq632 ...

  6. delegate委托

    delegate委托: 三个概念: C# 中的委托类似于 C 或 C++ 中的函数指针. 委托是面向对象.类型安全的,并且是安全的. 委托和接口的类似之处是:它们都允许分隔规范和实现. 一个原则: 被 ...

  7. C# Delegate(委托)与多线程

    C# Delegate(委托)与多线程 很多时候写windows程序都需要结合多线程,在.net中用如下得代码来创建并启动一个新的线程.     public void ThreadProc();   ...

  8. 【C#学习】delegate(委托) 和 event(事件)

    C# 中的委托(Delegate)类似于 C 或 C++ 中函数的指针.委托(Delegate) 是存有对某个方法的引用的一种引用类型变量.引用可在运行时被改变.在C#中方法不能作为参数直接传递,必须 ...

  9. VC6解决托盘菜单不消失

    CMenu menu; menu.LoadMenu(IDR_MNU_TRAY); // 2 CMenu* pMenu=menu.GetSubMenu(0); CPoint point; GetCurs ...

  10. 转:终于会用c#中的delegate(委托)和event(事件)了

    第一个例子: public class DelegateTest {// 声明delegate对象 public delegate void CompareDelegate(int a,int b); ...

最新文章

  1. mysql填加序列号(仿照oracle row_number函数)
  2. 电费竟然占了数据中心运维总成本的7成?
  3. c#垂直投影法_投影学
  4. QT的QGraphicsItem类的使用
  5. CNN和RNN中如何引入BatchNorm
  6. 中service层的作用_浅析Java中dto、dao、service、controller的四层结构
  7. Can't locate Config.pm in @INC
  8. matlab输出n个a,输入a,n两个参数,要求输出aaa...a(共n个)的值
  9. Hive单用户模式搭建
  10. 数据福利|各种分辨率DEM数据下载
  11. 电风扇标准集合(BS/EN/IEC/UL) - 安规+性能
  12. 美著名电话飞客去世 可凭口哨打免费电话(图)
  13. python读取excel画散点图对应多个y_Python数据分析:折线图和散点图的绘制
  14. Bandizip下载安装教程
  15. 程序员高管修炼之道!
  16. VUE实现页面局部刷新
  17. 四百元左右有什么降噪耳机推荐?高性价比降噪耳机推荐
  18. 重庆大学计算机类专业分数线,重庆大学录取分数线 2019年重庆大学各专业录取分数线...
  19. SQL由入门到精通的学习
  20. 一定要做自己最内行的东西,一定要在自己本身的职位上来提升自己

热门文章

  1. 阿里Q3财报:阿里云连续第7个季度翻番
  2. rabbitMQ概念详细介绍
  3. Jupyter Notebook 作图显示中文
  4. 如何用vs2013开发人员命令提示工具执行一个方法(一个简单的demo)
  5. Linux 第12天: (08月19日) 练习和作业
  6. HDOJ-2602 Bone Collector [DP-01背包问题]
  7. mongodb 集群shard_MongoDB分片集群部署详解
  8. 群晖 上传 源文件不存在_群晖NAS配多大容量硬盘合适?
  9. 汽车理论课后习题matlab程序,汽车理论课后题matlab程序
  10. 某医院病房计算机管理数据库,毕业论文_数据库某医院病房计算机系统.doc