限制UITextField输入内容的长度

一、前言

  今天做手机号输入限制长度,例如我的textfield只能输入11位,如果再多输入的话就不再textfield中显示,只显示11位的手机号。

  如果用ReactiveCocoa的话,这个很好解决。但是项目中没有引入该类库,所以只能手动的取完成了。

二、实现原理

  先看代码:

//
//  ViewController.m
//  Test
//
//  Created by zhanggui on 15/12/28.
//  Copyright  2015年 zhanggui. All rights reserved.
//

#import "ViewController.h"
@interface ViewController ()

@property (weak, nonatomic) IBOutlet UITextField *myTextField;
@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(textFiledEditChanged:) name:@"UITextFieldTextDidChangeNotification" object:self.myTextField];
    self.myTextField.placeholder = @"只能输入11位哦";

    // Do any additional setup after loading the view, typically from a nib.
}

#pragma mark - UITextFieldDelegate
-(void)textFiledEditChanged:(NSNotification *)obj{
    UITextField *textField = (UITextField *)obj.object;

    NSString *toBeString = textField.text;
    if (toBeString.length-1 > 10 && toBeString.length>1) {
        textField.text = [toBeString substringToIndex:11];
    }
}
@end

   做法如下:

  首先,我们需要添加一个通知,这个通知的name是:UITextFieldTextDidChangeNotification 。我们可以点击这个名字进去,会发现

UIKIT_EXTERN NSString *const UITextFieldTextDidChangeNotification;

  这个是在UITextField.h中定义的一个常量字符串,他的作用如下:

    通知观察者textField中的内容改变了,受影响的textField就存储在通知的object参数中。(Notifies observers that the text in a text field changed. The affected text field is stored in the object parameter of the notification.)

  这样的话,我们就可以通过通知来控制了。当我们每次输入字符到textField中的时候,都会在通知的方法中进行监听,我就在里面判断输入的字符串的长度是否满足需要的条件,如果满足了条件(我这里的条件是11位),就让textField的text始终等于我要限制的长度。以此来完成自己的需求。

 =========== =========== =========== =========== =========== =========== ===========

2015年12月31日下午5:57更新

另一个简单的方法:代码如下:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
    NSString *toBeString = [textField.text stringByReplacingCharactersInRange:range withString:string];
    if ([toBeString length] > 11) {
        textField.text = [toBeString substringToIndex:11];
        return NO;
    }    return YES;
}

时间: 2024-10-22 12:46:07

限制UITextField输入内容的长度的相关文章

excel怎么限定列单元格的输入内容?

  excel怎么限定列单元格的输入内容?        如何限定号码列单元格输入限定的文本位数,比如身份证号码列固定18位? 如何限定性别列单元格只可输入"男or女"? 工具/原料 excel(小编使用版本为MS office 2013) 一.如何限定号码列单元格输入文本位数 示例操作目的:以A列为号码(编码)列,要求是在A列只能键入5位数. 首先,在A列上方插入光标选中A列,在excel的菜单栏切换到"数据"选项卡,找到"数据工具"菜单组.

设计iOS中随系统键盘弹收和内容文字长度自适应高度的文本框

设计iOS中随系统键盘弹收和内容文字长度自适应高度的文本框     文本输入框是多数与社交相关的app中不可或缺的一个控件,这些文本输入框应该具备如下的功能: 1.在键盘为弹起时,输入框悬浮在界面底部. 2.当键盘弹起时,输入框位置上移至键盘上方,并且动画应与键盘同步. 3.当输入的文字超出一行时,输入框应想用的进行高度扩展. 4.当输入框的高度达到某一极限值时,输入框高度不应继续扩展,文字区域应该支持滑动.     使用autolayout布局技术加上对键盘的相关监听,可以十分方便的实现上述效

js限制文本框的输入内容代码分享(3类)_javascript技巧

为大家分享的JavaScript限制文本框的输入内容代码如下 <style type="text/css"> <!-- .STYLE1 { color: #0099FF; font-weight: bold; font-size: x-large; } --> </style> <p> </p> <p> </p> <p> </p> <p> </p> <

LI标签中内容超过长度后以省略号显示的方法

在使用DIV+CSS网页标准制作网页时,LI标签中内容超过长度后以省略号显示的方法. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><meta http-equiv="Content-Type" content="text/html; charset

PHP实例代码:模仿百度搜索时输入内容带提示

自己用PHP + js模仿的百度搜索时输入内容带提示的功能,运行的话需要PHP环境.也算是自己的一个练笔题吧,和大家分享一下 <?php        $aName = array("王成","王瑞","王祥","何武昌","何睿","何好","马兴","马成栋","张相","张祥");       

下拉菜单输入,根据输入内容自动定位

下拉菜单支持输入,并根据输入内容自动定位: 参考:演员发表于 10/23/2001 8:58:16 AM 的文章 "罗亭的可输入下拉框的解密简化版.",在此特别感谢相关人等. 本文为这个下拉框增加了一点小小的功能:输入能够定位在已有的选择框内.还有一个缺点,各位给改改:输入的时候不能够自动拉开选择框,怎么办? function getLeftPostion( theObj ){  var pos = 0;  while ( theObj != null )  {    pos += t

Word 2013文档中输入内容不能替换改写的解决方法

用户在Word2013中编辑文档时,有时会发现输入内容时不能替换已经被选中的文字,而是新输入的文字插入到了被选中内容的前面,无法实现改写效果.这往往是因为取消了"键入内容替换所选文字"功能. 在Word2013文档中开启"键入内容替换所选文字"功能的步骤如下所述: 第1步,打开Word2013文档窗口,依次单击"文件"→"选项"命令,如图2013042201所示. 图2013042201 单击"选项"命令

在Word 2007表格中输入内容

在Word2007中插入表格后,可以在需要输入内容的单元格中单击鼠标左键, 使其处于编辑状态,然后即可输入内容.在改变输入内容的单元格时,既可以通 过单击鼠标左键也可以按下Tab键,如图2009010807所示. 图2009010807 在Word2007表格中输入内容

Word2013文档中输入内容不能替换改写的解决方法

  用户在Word2013中编辑文档时,有时会发现输入内容时不能替换已经被选中的文字,而是新输入的文字插入到了被选中内容的前面,无法实现改写效果.这往往是因为取消了"键入内容替换所选文字"功能. 在Word2013文档中开启"键入内容替换所选文字"功能的步骤如下所述: 第1步,打开Word2013文档窗口,依次单击"文件"→"选项"命令,如图1所示. 图1 单击"选项"命令 第2步,打开"Word