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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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的分类中,便于随时调用,该代码实现了对手机号的格式控制

以上是关于IOS 关于TextField的一些可能用到的的主要内容,如果未能解决你的问题,请参考以下文章

3个关于SwiftUI中TextField不得不看的知识点

为啥 TextField 不关注更新? (iOS 15)

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

iOS UITextField 设置下底边

iOS 开开中textfield的一些记录

IOS textField(textview)字数判断