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

Windows平台高效BLE调试工具开发指南

本文为开发者提供了一份在Windows平台上开发高效BLE调试工具的详细指南。文章深入探讨了使用32feet.NET库进行蓝牙低功耗设备扫描、连接、数据通信及进阶功能开发的实战经验,旨在帮助开发者打造功能自定义、性能优化的专属调试利器,显著提升物联网和嵌入式设备的调试效率。

weixin_29201933的博客 256

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

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

pzyyl的专栏 560

果蔬及菜品识别系统

果蔬及菜品识别系统

我的博客 2118

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

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

lg767201403的博客 3694

焦距与视差的关系及其对深度估计的影响

焦距在立体视觉中的作用至关重要,它直接影响视差的大小,从而影响深度估计的精度。焦距越长,视差差异越大,物体的深度估计就越精确。这一关系使得焦距长的相机在一些需要高精度深度估计的应用场景中更加优越。了解焦距与视差的关系,对于优化相机配置和提升深度估计精度具有重要意义。在实践中,选择合适的焦距对于获得精确的深度信息至关重要,特别是在自动驾驶、虚拟现实、三维重建等领域,精确的深度估计能够提供更好的用户体验和技术支持。

计算机科学与技术专业学生的成长之路 1671

1006. 换个格式输出整数 (15)-PAT乙级真题

1006. 换个格式输出整数 (15)让我们用字母B来表示“百”、字母S表示“十”,用“12…n”来表示个位数字n(<10),换个格式来输出任一个不超过3位的正整数。例如234应该被输出为BBSSS1234,因为它有2个“百”、3个“十”、以及个位的4。输入格式:每个测试输入包含1个测试用例,给出正整数n(<1000)。输出格式:每个测试用例的输出占一行,用规定的格式输出n。输入样例1...

柳婼 の blog 2243

IOS开发实战:UILabel文本控件

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

BraveWangDev 1704

国产Flash替代方案:手把手教你用XSCT烧写ZYNQ7045的BOOT.BIN(附完整命令解析)

本文详细介绍了国产Flash替代方案在ZYNQ7045上的应用,通过XSCT工具链实现BOOT.BIN的精准烧写。内容涵盖国产Flash兼容性检查、PetaLinux环境搭建、XSCT烧写全流程及故障排查,帮助开发者高效完成国产化替代,提升硬件开发效率。

weixin_33670786的博客 427

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

RK3588开发笔记-麦克风阵列多pdm通道合并成一个声卡

在音频设备的开发中,特别是在多通道音频数据处理场景中,如何将多个PDM(Pulse Density Modulation)通道整合成一个声卡设备,是一个非常具有挑战性的问题。RK3588芯片作为一款性能强大的平台,提供了对多个音频通道的支持。本文将介绍如何在RK3588上将多个PDM通道合并成一个麦克风阵列声卡,从而在Linux系统下统一管理和使用,提高多通道音频的同步性。在本文中我们主要介绍使用2通道回采+4通道mic声音采集构成一个6通道声卡,加以回声消除实现一个多麦克风阵列。

flypig has a dream! 1926

CVPR 2023 中的半监督学习: FixMatch 的升级版 UniMatch

我们首先回顾下发表在 NeurIPS 2020 上的 FixMatch: Simplifying Semi-Supervised Learning with Consistency and Confidence,FixMatch 是一种更轻量的半监督分类方法。如下图所示,FixMatch 首先使用模型(带标签数据训练后的)对弱增强的未标记图像进行预测,生成伪标签。对于给定的图像,只有在模型产生高置信度的预测时,伪标签才会被保留。然后,在输入同一图像的强增强版本时,训练模型预测伪标签。

NJU phd 在读。 2633

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

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

编程进化论 3458

在ubuntu20.04中安装MATLAB时常见问题及解决方法

   如果你刚装完ubuntu20.04,这时你想要安装MATLAB2021A,在输入命令./install进行安装时,可能会报以下错误:    terminate called after throwing an instance of ‘JailContainerException’ what(): Error: 88: No JRE version parsed from/media/jzx/MATHWORKS_R2021A/sys /java/jre/glnxa64/jre/release   

慕羽★的博客 1万+
上一篇: 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、付费专栏及课程。

余额充值