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

第一步:
在你的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;
}

posted @ 2015-09-22 21:47  Joe.Smith  阅读(260)  评论(0编辑  收藏  举报