键盘相关处理

iOS键盘控制与UITextField限制
本文介绍了在iOS开发中如何有效控制键盘显示与隐藏的方法,包括针对不同类型的UIViewController(如TableViewController)的具体实现细节。此外,还深入探讨了如何通过UITextField的代理方法实现对输入内容的精确控制,例如限制金额输入框只允许输入两位小数。

实际开发中在退出当前界面前,要将弹起的键盘收起

 - (void)viewWillDisappear:(BOOL)animated {    
      [super viewWillDisappear:animated];
      
      // 视图退出编辑状态(收起键盘)
      [self.view endEditing:YES];
 }
复制代码

如果当前控制器是TableViewController时,就不能这么写了

- (void)viewWillDisappear:(BOOL)animated {
    [super viewWillDisappear:animated];
    
    // 关闭第一响应者(收起键盘)
    [self.textField resignFirstResponder];
}
复制代码

在实际开发中有时候需要对 文本输入框UITextfiled 进行一些限制. 比如说在输入金额的时候我们希望只能输入最多两位小数.应该怎么办呢?UITextfiled 有个代理方法

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string; // return NO to not change text
复制代码

官方的注释是** return NO **的时候是不能改变文字的.那么我们就在这个方法里做手脚.为了少做一些判断.我们可以先限制调出的键盘类型为UIKeyboardTypeDecimalPad.

UIKeyboardTypeDecimalPad

// 输入金额 限制两个小数

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
      if ([textField.text containsString:@"."]) {
        if ([string isEqualToString:@"."]) return NO;
        NSRange rangeOfPoint = [textField.text rangeOfString:@"."];
        if (range.location > rangeOfPoint.location + 2) return NO;
      }
        return YES;
      }
复制代码

附录: 键盘样式:

UIKeyboardTypeDefault

UIKeyboardTypeASCIICapable

UIKeyboardTypeNumbersAndPunctuation

UIKeyboardTypeURL

UIKeyboardTypeNumberPad

UIKeyboardTypePhonePad电话号码键盘

UIKeyboardTypeNamePhonePad

UIKeyboardTypeEmailAddress

UIKeyboardTypeDecimalPad金额键盘

UIKeyboardTypeTwitter

UIKeyboardTypeWebSearch

UIKeyboardTypeAlphabet = UIKeyboardTypeASCIICapable

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值