iOS UITextField控件关闭键盘的方法

本文介绍在iOS应用中如何优雅地关闭键盘,包括轻触背景和使用返回键关闭键盘的方法,并提供具体的实现代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

     在 iOS 程序中当想要在文本框(textField)中输入数据,轻触文本框会打开键盘。 iPhone 程序中的键盘没有专用退出键盘的按钮,不过我们可以采取一些方法关闭它。例如,我们可以实现按下 Rerun (有时也是 Done、Research 等)键关闭键盘,或者,更人性化的,轻触背景关闭键盘。

    对一些方法先简单分类1、非协议实现 2、协议方法实现

    废话不多说,直接上一种非协议方法且是最人性化的轻触背景退出键盘

    首先申明     @property (strong, nonatomic) UITextField *textfield;


    方法1:利用UIView的触摸事件,为什么能用?因为UITextField继承自UIView,所以能在控制器直接重写

  - (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event 实现触摸背景退出键盘

  上完整代码

  - (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event

  {

    if(![self.textfield isExclusiveTouch]) //在文本框外部区域触摸屏幕

    {

        [self.textfield resignFirstResponder];

    }

  }


  方法2:利用协议方法,实现return键退出键盘

  @interface ViewController () <UITextFieldDelegate> //实现UITextField代理

  在    -(void)viewDidLoad 中设置 self.textfield.delegate = self//设置代理
     再实现协议方法

  - (BOOL)textFieldShouldReturn:(UITextField *)textField

  {

    [textField resignFirstResponder];       //textField代表当前为第一响应者的textField控件

    return YES;

  }

  一般,前两种方法就能够实现一些简单的功能,但这儿提供的第三种方法有更好的灵活性

  方法3:给UITextField控件绑定一个 UIControlEventEditingDidEndOnExit事件,实现return键退出键盘

  [self.textfield addTarget:self action:@selector(textFieldEndEditingAndReturn:) forControlEvents:UIControlEventEditingDidEndOnExit];

  

  - (void)textFieldEndEditingAndReturn:(id)sender

  {

    [sender resignFirstResponder];

  }

  当然,在代码的世界没有最好,只有更好,在此,谨以此抛砖引玉。如有疑问,或完整程序,敬请留言。

  贴出viewDidLoad()的全部代码,希望能略尽绵薄之力

  

- (void)viewDidLoad

{

    [super viewDidLoad];

self.textfield = [[UITextField alloc] initWithFrame:CGRectMake(120, 200, 100, 30)];

    self.textfield.borderStyle = UITextBorderStyleRoundedRect;   //边框样式

    self.textfield.clearButtonMode = UITextFieldViewModeAlways//一键清楚

    self.textfield.placeholder = @"textfield";                   //水印效果

    self.textfield.delegate = self;                              //设置代理

    [self.textfield addTarget:self action:@selector(textFieldEndEditingAndReturn:) forControlEvents:UIControlEventEditingDidEndOnExit];

    [self.view addSubview:self.textfield];

}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值