IOS 关于TextField的一些可能用到的

在移动端iOS 的开发中,经常会有像下面的那种输入形式

这些看起来没有输入效果的,其实都是TextField,当然也可以用其他的控件去实现,但是在同一个分区的情况下,用统一的控件去实现才便于简化代码;

1、前面两种是点击没有效果的,使用textField.enable = NO;实现,那么就会出现效果跟label一样的显示效果,并且多了placeholder;

2、矩形方框中的两种是不具备编辑功能,但是支持点击事件功能的,它的实现可以通过一下方式实现:

实现textFeild的

[textField addTarget:self action:@selector(textFieldStataEditing:) forControlEvents:UIControlEventEditingDidBegin];

根据tag判断你需要是哪些textField,然后做相应的处理

-(void)textFieldStataEditing:(UITextField*)textField{

if (textField.tag == 2) {

[textField resignFirstResponder];

[self showTimeSelectView];//此处为点击事件

return;

}

if (textField.tag == 5) {

[textField resignFirstResponder];

[self showAddressSelectView]; //此处为点击事件

return;

}

}

3、然后是像电话号码那种有空格或者横线形式的格式

  1. 需要实现textField的代理
  2. 实现代理方法

    -(void)textFieldEdingChange:(UITextField*)textField{

    if (textField.tag == 4) {

    NSString* tempString = [textField getStringFilterSpecialCharacter:@" "];

    if (tempString.length == 11) {

    [textField resignFirstResponder];

    }

    }

    }

    -(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{

    if (textField.tag == 4) {

    return  [textField setPhoneNumberStyleShouldChangeCharactersInRange:range replacementString:string];

    }

    return YES;

    }
    其中

    /**

    设置电话号码的显示格式  (如:112 1189 9876)

    @param range 长度

    @param string 输入的字符

    @return 返回是否可继续输入

    */

    -(BOOL)setPhoneNumberStyleShouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{

    //    NSUInteger proposedNewLength = textField.text.length - range.length + string.length;

    //string.length>0此时执行添加操作

    if (string.length>0) {

    NSMutableString *str=[NSMutableString stringWithString:self.text];

    while (self.text.length==3||self.text.length==8) {

    if (self.text.length==3) {

    [str insertString:@" " atIndex:3];

    }

    else if(self.text.length==8){

    [str insertString:@" " atIndex:8];

    }

    self.text = [NSString stringWithString:str];

    }

    }

    //string.length=0此时执行删除操作

    else if(string.length==0){

    NSMutableString *str=[NSMutableString stringWithString:self.text];

    while (self.text.length==5||self.text.length==10) {

    if (self.text.length==5) {

    [str deleteCharactersInRange:NSMakeRange(4, 1)];

    }

    else if(self.text.length==10){

    [str deleteCharactersInRange:NSMakeRange(9, 1)];

    }

    self.text = [NSString stringWithString:str];

    }

    //        NSLog(@"%@",textField.text);

    }

    // 限制输入长度为13.(分隔线也计算在内)

    if (self.text.length > 13){

    return NO;//限制长度

    }

    return YES;

    }

    建议写到textField的分类中,便于随时调用,该代码实现了对手机号的格式控制

时间: 2024-10-22 08:50:03

IOS 关于TextField的一些可能用到的的相关文章

ios让textfield的光标不出现

ios让textfield的光标不出现,只需要把光标颜色清掉就可以了 textfield.tintColor = [UIColor clearColor];

转发:iOS之textfield用法大全

转发至:http://m.blog.csdn.net/article/details?id=8121915 //初始化textfield并设置位置及大小 UITextField *text = [[UITextField alloc]initWithFrame:CGRectMake(20, 20, 130, 30)]; //设置边框样式,只有设置了才会显示边框样式 text.borderStyle = UITextBorderStyleRoundedRect; typedef enum { UI

iOS(Swift) TextField限制输入文本的长度(不是字数)

最近做项目有一个特殊需求,就是需要限制一个TextField的输入文本的长度在一定范围内(注意,不是字数),上网查了一圈没有找到类似文章,这里把我的方法写进来,mark一下: 1.对TextField添加监听函数: textField.addTarget(self, action: "textFieldTextDidChange:", forControlEvents: UIControlEvents.EditingChanged) 2.在输入内容变化时进行处理: func textF

iOS对textField进行字符长度限制的办法

在项目开发过程中,遇到这么一个需求,编辑标签时,输入的最大长度需要限制为24个字节. 查阅了一些材料,并参考了之前项目的相关处理办法,今天在这里总结一下解决方案. 1.添加对UITextField的编辑变化事件的监听: [self.textField addTarget:self action:@selector(textLengthChange:) forControlEvents:UIControlEventEditingChanged]; 2.实现对应的action: -(void)tex

ios 含有textfield的viewcontroller随键盘弹起而改变位置

首先实现 设置代理,self.textfield.delegate = self; 具体实现代码: -(void)textFieldDidBeginEditing:(UITextField *)textField{ NSTimeInterval animationDuration = 0.30f; [UIView beginAnimations:@"ResizeForKeyboard" context:nil]; [UIView setAnimationDuration:animati

ios App textField placeholder 信息上浮

textField placeholder 提示信息上浮 当输入框 有文的时候 placeholder 信息就浮动到左上角. 只要继承就行,不用附加调用代码, 使用非常简单. tintFloatField 代码调用非常简单 #import "RPFloatingPlaceholderTextField.h" #import "RPFloatingPlaceholderTextView.h" @interface ViewController () @property

ios设置textField只能输入数字用于电话号码

首先在.xib中将UITextField的Keyboard设置为Number Pad,但是使用时键盘会切回别的键盘无法对内容进行校验.通过神奇的百度我知道了通过以下方法可以解决这样的问题: 首先让.xib的viewController实现UITextFieldDelegate然后和想要校验的控件关联. 以上是xib,如果是代码设置的 就不要考虑还是那个面部分 然后将下列代码粘贴到类中即可. - (BOOL)textField:(UITextField *)textField shouldChan

iOS开发TextField根据键盘自适应位置

- (void)setNotification { [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillChangeFrame:) name:UIKeyboardWillChangeFrameNotification object:nil]; } - (void)closeNotification { [[NSNotificationCenter defaultCenter]

ios修改textField的placeholder的字体颜色、大小

textField.placeholder = @"summer"; [textField setValue:[UIColor redColor] forKeyPath:@"_placeholderLabel.textColor"]; [textField setValue:[UIFont boldSystemFontOfSize:16] forKeyPath:@"_placeholderLabel.font"];