UITextField 文本字段控件-IOS开发

IOS 自定义UITextField(输入限制-明密文切换)功能 ASCII值 控制字符 ASCII值 控制字符 ASCII值 控制字符 ASCII值 控制字符 0 NUT 32 (space) 64 @ 96 、 1 SOH 33 ! 65 A 97 a 2 STX 34 " 66 B 98 b 3 ETX 35 # 阅读详情

进入本文之前建议你认真读一读我的另一篇博文:《UIControl IOS控件编程—IOS开发》http://blog.youkuaiyun.com/iukey/article/details/7300412  这样会起到事半功倍效果。

再就是用到UITextField,肯定离不开键盘啦,所以还有一片博文推荐:《UIKeyboard键盘相关知识点》

为什么要看另一篇关于UIControl的文章呢?因为UITextField继承自UIControl类,很多UIControl的属性、方法、通知等完全适用于UITextField,而那些属于UIControl的东西我又不会在此赘述。(主要是减轻文章的长度,以最少的文字最通俗易懂讲明白一个知识点是我追求的目标。)

创建

UITextField* myTextField = [[UITextField alloc]initWithFrame:CGRectMake(50, 100, 200, 50)];
纯代码创建View请参看我的另一片博文: 《有关View的几个基础知识点》http://blog.youkuaiyun.com/iukey/article/details/7083165


设置委托

myTextField.delegate = self;//委托类需要遵守UITextFieldDelegate协议


设置属性

UIControl属性对UITextField完全可以用,下面的都是UITextFiels扩展的属性:

    myTextField.textAlignment = UITextAlignmentLeft;//默认就是左对齐,这个是UITextField扩展属性
    myTextField.borderStyle = UITextBorderStyleBezel;//默认是没有边框,如果使用了自定义的背景图片边框会被忽略掉
    myTextField.placeholder = @"请在此输入账号";//为空白文本字段绘制一个灰色字符串作为占位符
    myTextField.clearsOnBeginEditing = YES;//设置为YES当用点触文本字段时,字段内容会被清除
    myTextField.adjustsFontSizeToFitWidth = YES;//设置为YES时文本会自动缩小以适应文本窗口大小。默认是保持原来大小,而让长文本滚动
    //myTextField.background = [UIImage imageNamed:@"registBtn"];//可以接受UIImage对象,此项设置则边框失效。
    myTextField.clearButtonMode = UITextFieldViewModeUnlessEditing;//右边显示的'X'清楚按钮
    //myTextField.LeftView =
    //myTextField.leftViewMode = 
    //myTextField.RightView =
    //myTextField.rightViewMode =    

    这些属性令你可以将UIView的派生类附着于为本字段的左方或右方。人们通常会将UIButton对象,比如放大镜或者书签按钮附着与文本字段上。每个附着视图都会有一个相应的模式,设置clearButtonmode属性的那些值,同样可以设置这个模式。

显示

 [self.view addSubview:myTextField];


重写绘制行为

除了UITextField对象的风格选项,你还可以定制化UITextField对象,为他添加许多不同的重写方法,来改变文本字段的显示行为。这些方法都会返回一个CGRect结构,制定了文本字段每个部件的边界范围。如果你创见了一个自定义的UITextField类,你可以重写这些方法,这样就可以改变一个或多个边界。一定不要直接调用 fan广发;它们都是被iPhone运行库调用的回调函数下面举个例子:

- (CGRect)clearButtonForBounds:(CGRect)bounds{
    return CGRectMake(bounds.origin.x +bounds.size.width-50, 
                      bounds.origin.y+bounds.size.height-20, 16, 16);
}

下列方法在创建一个UITextField的子类时可以重写:

borderRectForBounds

指定矩形边界

textRectForBounds

 指定显示文本的边界

placeholderRectForBounds

指定站位文本的边界

editingRectForBounds

指定编辑中文本的边界

clearButtonRectForBounds

指定显示清除按钮的边界

leftViewRectForBounds

指定显示左附着视图的边界

rightViewRectForBounds

指定显示右附着视图的边界


委托方法

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField{
    //返回一个BOOL值,指定是否循序文本字段开始编辑
    return YES;
}
- (void)textFieldDidBeginEditing:(UITextField *)textField{
    //开始编辑时触发,文本字段将成为first responder
}
- (BOOL)textFieldShouldEndEditing:(UITextField *)textField{
    //返回BOOL值,指定是否允许文本字段结束编辑,当编辑结束,文本字段会让出first responder
    //要想在用户结束编辑时阻止文本字段消失,可以返回NO
    //这对一些文本字段必须始终保持活跃状态的程序很有用,比如即时消息
    return NO;
}
- (BOOL)textField:(UITextField*)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
    //当用户使用自动更正功能,把输入的文字修改为推荐的文字时,就会调用这个方法。
    //这对于想要加入撤销选项的应用程序特别有用
    //可以跟踪字段内所做的最后一次修改,也可以对所有编辑做日志记录,用作审计用途。   
    //要防止文字被改变可以返回NO
    //这个方法的参数中有一个NSRange对象,指明了被改变文字的位置,建议修改的文本也在其中
    return YES;
}
- (BOOL)textFieldShouldClear:(UITextField *)textField{
    //返回一个BOOL值指明是否允许根据用户请求清除内容
    //可以设置在特定条件下才允许清除内容
    return YES;
}
-(BOOL)textFieldShouldReturn:(UITextField *)textField{
    //返回一个BOOL值,指明是否允许在按下回车键时结束编辑
    //如果允许要调用resignFirstResponder 方法,这回导致结束编辑,而键盘会被收起
    [textField resignFirstResponder];//查一下resign这个单词的意思就明白这个方法了
    return YES;
}

通知

UITextField派生自UIControl,所以UIControl类中的通知系统在文本字段中也可以使用。除了UIControl类的标准事件,你还可以使用下列UITextField类特有的事件

UITextFieldTextDidBeginEditingNotification

UITextFieldTextDidChangeNotification

UITextFieldTextDidEndEditingNotification

当文本字段退出编辑模式时触发。通知的object属性存储了最终文本。

因为文本字段要使用键盘输入文字,所以下面这些事件发生时,也会发送动作通知

UIKeyboardWillShowNotification

键盘显示之前发送

UIKeyboardDidShowNotification

键盘显示之后发送

UIKeyboardWillHideNotification

键盘隐藏之前发送

UIKeyboardDidHideNotification

键盘隐藏之后发送


打开键盘卷动文本字段

键盘弹出有可能遮住文本字段,所以我们要让视图整体上移一定距离,关于这个请参看我有一篇文章专门来讲这个问题:

《打开键盘遮住View的问题解决方法-IOS开发》

把写文章时敲的代码附上 UITextField 文本字段控件Demo

iOS开发中登陆页面的制作 在iOS开发中,我们利用UI类来创建我们需要的对象,然后利用对象来完成我们索要做的事,现在我利用UI控件给大家介绍一些最常用最基本的类的用法,主要代码的用法如下: #import "ViewController.h" @interface ViewController () @property(strong,nonatomic) UIView *aview; 阅读详情

相关推荐

UITextField Demo实例

UITextField Demo IOS Objective-C 代码

设置UITextField的左边距

CGRect frame = [self.TF_setLocation frame];  //为你定义的UITextField    frame.size.width = 15;       UIView *leftview = [[UIView alloc] initWithFrame:frame];     self.TF_setLocation.leftViewMode = U

jijunyuan_11109的专栏 2626

UITextField+BlockDemo

UITextFieldBlockDemo

解决UITextField 中 leftView设置控件宽高无效

问题: textfield.leftView设置成imageView后, imageView中设置的宽高无效,出来的效果就是图片紧紧贴着左边和右边内容。 解决方案: 创建一个UIView,设置为textfield.leftView 将imageView添加到UIView上

LiangYuan优快云的博客 1455

iOS开发之自定义UITextField的方法

UITextField是IOS开发中用户交互中重要的一个控件,常被用来做账号密码框,输入信息框等。 观察效果图 UITextField有以下几种特点: 1.默认占位文字是灰色的 2.当光标点上去时,占位文字变为白色 3.光标是白色的 接下来我们通过不同的方法来解决问题 一.将xib中的UITextField与代码关联 通过NSAttributeString方法来更改占位文字的属性 (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view from its

Outlook日历同步全攻略:Win10+安卓+iOS三端无缝衔接(附常见问题解决)

本文提供了一份详尽的Outlook日历同步指南,帮助用户在Windows 10、安卓和iOS三端实现无缝衔接。文章深入解析了Exchange ActiveSync等核心同步原理,并给出了从账户创建到各设备(特别是华为手机)的具体配置步骤、进阶管理技巧以及针对同步失败、事件重复等常见问题的实战解决方案,旨在彻底解决跨平台日程管理的痛点。

l3m4n的博客 554

利用NSNotificationCenter消息通信机制观察UITextField的状态(Swift)

UITextField本身自带三个消息类型: UITextFieldTextDidBeginEditingNotification UITextFieldTextDidChangeNotification UITextFieldTextDidEndEditingNotification 至于作用嘛,看名字就知道了啦~~ 因为登录界面需要,所以今天就稍微的了解了一下= =,然后怕又会

pzyyl的专栏 560

图像识别火灾检测系统实战:从火焰特征到YOLO部署全解析

计算机视觉技术正深入改变传统消防的感知方式。图像识别火灾检测利用摄像头采集的视频流,通过颜色、动态和形态特征分析,实现早期火情的自动发现与定位。其核心原理在于,火焰在视觉上具有独特的颜色分布、闪烁特性和轮廓变化,借助目标检测模型如YOLO,可在复杂场景中区分真实火焰与干扰物。这项技术广泛应用于仓库、园区、隧道等大空间场所,是智慧消防的重要支撑。本文从火焰视觉特征、数据集构建、模型选型与系统架构设计出发,结合部署实践中的误报与算力优化经验,为开发者提供一套可落地的视频火焰检测方案。

weixin_42533751的博客 245

iOS 使用UITextField自定义搜索框 实现用户输入完之后“实时搜索”

UI小姐姐设计的搜索框经常是五花八门,系统的搜索框经常不能满足我们的需求,需要我们特别定制一个。但是UITextField的诸多回调里面,没有一个是适合触发搜索时间的。 UITextFieldTextDidChangeNotification调用过于频繁,没输入一个字符就调一次接口怕是不太合适。 UITextFieldTextDidEndEditingNotification只有在结束编辑的时候才...

lg767201403的博客 3694

修改Avaya IP-Office电话交换机出厂自带的提示语音内容

1,本文的应用场景是在使用Avaya IP-office 500 v2电话交换机时,来电振铃超时后,会转入语音信箱,呼叫者会听到一条语音信箱留言的欢迎辞(…请留言…)。但我们单位情况比较特殊,首先是的IPO配置很精简,内嵌的语音信箱只能保留3天,用处不大;其次是用户没有收听语音信箱的习惯;第三是我们单位使用数字中继和DID,每人一个直拨号码,不通过总机转接。很多业务是单线联系,所以一旦来电无法接通,来电者可能完全无法联系到我们单位的其他同事。出于这三点原因,我们希望将语音信箱的欢迎辞,增加告知我们的总机电话

qlin4cn的博客 4919

【Unity】Unity 跨平台及编译过程

早期的Unity跨平台是基于MONO运行时的,又通过CLS实现了跨语言。其基本思路是将各个版本的语言统一编译成CIL语言,在不同平台运行时使用CLR进行解释。有点类似于Java的jdk和jvm。 CLS(Common Language System)通用语言规范:CLS是一种规范,类似于schema,当文件被指定遵守CLS规范后,在某语言中写出不符合通用规范的代码后将被警告或报错。 MONO是一个开源工程,其中包含C#编译器,CLR运行时,以及一组类库。该工程常见了一系列符合ECMA标准的.NET工具,MO

一个普普通通的游戏开发者 7237

IOS开发实战:UILabel文本控件

一,创建UILabel文本控件项目 1,打开Xcode,创建名为HelloWorldText的工程 如何创建工程:Xcode创建HelloWorld项目 2,在ViewController中的viewDidLoad方法中添加如下代码: - (void)viewDidLoad { [super viewDidLoad]; UILabel * label = [[UILabel...

BraveWangDev 1704

【OpenCV】复杂场景下的高精度圆检测实战(附完整代码)

本文针对OpenCV霍夫圆检测在复杂场景下易失效的问题,提出了一套基于轮廓分析的高精度圆检测实战方案。通过图像预处理、轮廓发现及多轮几何筛选(面积、周长、椭圆拟合、多边形逼近),有效排除噪声和类圆干扰物,显著提升复杂场景下的检测鲁棒性,并附完整可调参的Python代码实现。

weixin_29095587的博客 200

UILabel 和UITextfield详解

一、UILabel (1)初始化UILabel [csharp] view plaincopy "color:#000000;">UILabel *scoreLabel = [ [UILabel alloc ] initWithFrame:CGRectMake((self.bounds.size.width / 2), 0.0, 150.0

u012887866的专栏 787

MMRotate 详细使用教程

MMRotate 详细使用教程 做旋转目标检测,怎么可以不知道如何使用MMRotate呢! github链接: https://github.com/open-mmlab/mmrotate 1 安装 创建虚拟环境并激活 conda create -n mmrotate python=3.7 -y conda activate mmrotate 安装 PyTorch 和 torchvision conda install pytorch torchvision -c pytorch 注意:确保

Sylvia_Lan的博客 1万+

基于Python的MGWR多尺度地理加权回归模型

多尺度地理加权回归(MGWR)变量之间的关系在地理空间上不是均一的,所有特征变量的影响都在不同的空间范围(带宽)内变化,某些变量可能表现出局部性影响(小带宽),某些变量可能表现出全局性影响(大带宽),通过优化每个特征变量的带宽,捕捉到空间关系的多尺度特性,得到更细致的模型解释。

weixin_61965078的博客 3853

IOS学习——图像视图 和 文本字段

现在我们开始ios应用程序的编写,先从基本控件开始 看到上面红色放开标记的Image View 视图了吧,这就是我们要说的第一个控件,图像视图控件。 我们拖动一个图像视图到View窗口上,  IB将自动重新调整图像视图的大小。 OK,我们选中图像,看到下面的UIImageView类的可编辑选项。下面我们就来介绍。 看到那个Image属性了吧,

编程进化论 3458

BAT007:批量为当前目录下的文件夹添加前缀或后缀

摘要:编写批处理程序,实现批量为当前目录下的文件夹添加前缀或后缀。

qq_31762031的博客 4052
上一篇: UIControl IOS控件编程—IOS开发
下一篇: UISwitch 开关控件—IOS开发
iOS开发者
博客等级 码龄16年 626粉丝 81原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值