UITextField 的使用

1.UITextField 的基本设置

   UITextField *passTf = [[UITextField alloc]init];//初始化
    passTf.placeholder = @"密码";//填充背景提示
    passTf.secureTextEntry = YES; //设置为密码格式,默认是明文格式
    passTf.delegate = self;//设置代理,能够使用协议中的方法实现操作
    passTf.clearButtonMode = UITextFieldViewModeWhileEditing;//编辑时尾部出现 x , 能够清空文本
    [父视图 addSubview:passTf]; //添加视图
    [passTf mas_makeConstraints:^(MASConstraintMaker *make) {//此处运用了Masonry第三方框架实现自动布局
       make.edges.mas_equalTo(UIEdgeInsetsMake(0, 20, 0, 20));
    }];
 textField.returnKeyType = UIReturnKeyDefault;//默认是return

2.UITextField的文本限制 以及 字符长度

//定义字符类型kAlphaNum
#define kAlphaNum @"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"

-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
  //限制字符类型
    NSCharacterSet *cs;
    cs = [[NSCharacterSet characterSetWithCharactersInString:kAlphaNum]invertedSet];
    
    NSString *filtered = [[string componentsSeparatedByCharactersInSet:cs]componentsJoinedByString:@""]; //按cs分离出数组,数组按@""分离出字符串
    
    BOOL canChange = [string isEqualToString:filtered];
    
    if (!canChange) {
        UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"⚠️警告" message:@"输入错误!请输入字母或数字" preferredStyle:UIAlertControllerStyleAlert];
        [alert addAction:[UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
            
        }]];
        [self presentViewController:alert animated:YES completion:nil];
    }
    //限制字符长度
    NSString * toBeString = [textField.text stringByReplacingCharactersInRange:range withString:string]; //得到输入框的内容
    if ([string isEqualToString:@""]) {
        return YES;
    }
    BOOL islength = [toBeString length] < 10;
    if (!islength) {
        textField.text = [toBeString substringToIndex:[toBeString length] -1];
        UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"⚠️警告" message:@"用户名和密码不能超过10个字符!" preferredStyle:UIAlertControllerStyleAlert];
        [alert addAction:[UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
            
        }]];
        [self presentViewController:alert animated:YES completion:nil];
        
    }
    
    return canChange && islength;
}


3.return 按键对应的协议方法

#pragma UITextFieldDelegate
-(BOOL)textFieldShouldReturn:(UITextField *)textField {
    [textField resignFirstResponder];//放弃第一响应者,收起键盘
    textField.text = @"";  //将文本内容置空
    return YES;
}





http://www.niftyadmin.cn/n/704459.html

相关文章

记录 HtmlHelper和 强类型页面

HtmlHelper 路径生成<!--普通写法--> <a href"/home/index">超链接</a> <!--利用Url类动态--> <a href"Url.Action("index","home")">超链接</a> <!--利用HtmlHelper生成--> Html.ActionL…

Android自定义权限使用总结

最近在研究关于android自定义权限的问题&#xff0c;关于自定义权限一般是保证APP的安全性&#xff0c;那么什么事自定义权限&#xff1f;今天我们来补充一下自己的知识 作者&#xff1a;BrightVan地址&#xff1a;https://www.jianshu.com/p/b60... 1、如何声明自定义权限 在M…

监控键盘状态

1.使用Masnory自动布局 //监控键盘[[NSNotificationCenter defaultCenter] addObserver:self selector:selector(keyBoardShow:) name:UIKeyboardWillShowNotification object:nil];[[NSNotificationCenter defaultCenter] addObserver:self selector:selector(keyBoardHide:)…

Xcode修改工程名称

1.修改名称&#xff0c;例如将红色方框的名称改为易车之家 2.修改完成后会弹出下图提示框&#xff0c;点击Rename 3.点击Rename之后&#xff0c;会弹出下图提示框&#xff0c;点击Continue 4.按照下图进入Manage Schemes 5.点击红色方框名称进行修改&#xff0c;改成易车之家&a…

vue中 关于$emit的用法

1、父组件可以使用 props 把数据传给子组件。 2、子组件可以使用 $emit 触发父组件的自定义事件。 vm.$emit( event, arg ) //触发当前实例上的事件 vm.$on( event, fn );//监听event事件后运行 fn&#xff1b; 例如&#xff1a;子组件&#xff1a; <template> <div…

107. 二叉树的层次遍历 II

107. 二叉树的层次遍历 II https://leetcode-cn.com/problems/binary-tree-level-order-traversal-ii/description/ package com.test;import java.util.ArrayList; import java.util.List;/*** Author stono* Date 2018/8/27 上午10:40*/ public class Lesson107 {public stat…

@synchronized(self)的作用

Objective-C支持程序中的多线程。这就意味着两个线程有可能同时修改同一个对象&#xff0c;这将在程序中导致严重的问题。为了避免这种多个线程同时执行同一段代码的情况&#xff0c;Objective-C提供了synchronized()指令。 synchronized(self)&#xff1a; 作用&#xff1a;创…

ionic3+angular4+cordova 项目实例

去年年底到现在几个月一直在忙项目&#xff0c;angular已经更新到angular4&#xff0c;ionic也同步更新到ionic3&#xff0c;这几天抽空用ionic3做了个小demo&#xff0c;代码发布到码云&#xff0c; https://gitee.com/crossinfo/ionic3-base demo很简单&#xff0c;基于ionic…