前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >iOS开发——定制UITextField

iOS开发——定制UITextField

作者头像
Originalee
发布于 2018-08-30 02:32:27
发布于 2018-08-30 02:32:27
1.6K00
代码可运行
举报
文章被收录于专栏:编程之旅编程之旅
运行总次数:0
代码可运行

iOS中UITextField这个控件作为文本输入控件一定是使用率最高的几个控件之一,而iOS提供的默认的原始TextField的造型肯定在开发时很难满足我们的要求,原因很简单,不够美观,实在太单调。所以今天我们从一些简单的复写UITextField方法开始,来讲一讲如何定制一个属于自己的UITextField。

之前的文章我们讲过UITextField中,如何设置leftView,圆角以及控制文字输入时的距离。今天我们主要从UITextField的键盘收起、placeholder的设置以及自定义距离、字体,以及控制输入文本时,距离UITextField边框的距离和UITextField中一些常用的方法和枚举变量等方面来阐述如何定制自己的UITextField。

键盘的收起

首先我们先来看UITextField的键盘弹出和回收,UITextField在默认的情况下,键盘在输入完成后是不会自动回收的,这里我们讲解如何在按下Return键时,键盘自动回收。首先我们要遵循<UITextFieldDelegate>协议,之后在后面写入

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
    [textField resignFirstResponder];
    return YES;
}

通过写入这个方法,来实现按下Return按钮回收键盘。

placeholder的设置

在一些特定功能的文本输入框,我们常常要设置placeholder属性来指明当期UITextField的功能,例如:请在此处输入密码。可是placeholde的默认属性是紧贴文本输入框的,而且字体以及字体大小也不美观,于是我们可以这么来设置placeholder

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//控制placeHolder的位置,左右缩20
-(CGRect)placeholderRectForBounds:(CGRect)bounds
{
        return CGRectInset(bounds, 20, 4);
}

//控制左视图位置
- (CGRect)leftViewRectForBounds:(CGRect)bounds
{

    return CGRectInset(bounds,0,0);
}

//控制编辑文本的位置
-(CGRect)editingRectForBounds:(CGRect)bounds
{
    return CGRectInset( bounds, 20, 0);
}

//控制显示文本的位置
-(CGRect)textRectForBounds:(CGRect)bounds
{
    return CGRectInset(bounds, 20, 0);
}

我们可以先如上面的代码一样,设置placeholder的位置,同时要注意的一点是,在设置了placeholder的位置之后,我们也要相应的调整文本显示的位置,以及在编辑完成后,文本显示在输入框的位置。

至于placeholder的字体和字体大小设置 可以用如下方法设置,记住这个方法写在子类化的UITextField中是没有效果的,一定要写在创建UITextField的过程中。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    [TextField setValue:[UIFont fontWithName:@"Arial" size:12]   forKeyPath:@"_placeholderLabel.font"];

UITextField中一些常用的属性以及枚举变量

UITextFieldBorder 边框设置

设置TextField的边框效果,一定要设置了才有效果,类型如下

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
typedef NS_ENUM(NSInteger, UITextBorderStyle) {
    UITextBorderStyleNone,
    UITextBorderStyleLine,
    UITextBorderStyleBezel,
    UITextBorderStyleRoundedRect
};
UITextFieldViewMode

此属性用来定义我们之前讲的leftView和rightView的存在时机

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
typedef NS_ENUM(NSInteger, UITextFieldViewMode) {
    UITextFieldViewModeNever,
    UITextFieldViewModeWhileEditing,
    UITextFieldViewModeUnlessEditing,
    UITextFieldViewModeAlways
};
UIReturnKeyType返回按钮类型

在键盘上的返回按键,系统也给我们提供了一些常用的类型

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
typedef NS_ENUM(NSInteger, UIReturnKeyType) {
    UIReturnKeyDefault,
    UIReturnKeyGo,
    UIReturnKeyGoogle,
    UIReturnKeyJoin,
    UIReturnKeyNext,
    UIReturnKeyRoute,
    UIReturnKeySearch,
    UIReturnKeySend,
    UIReturnKeyYahoo,
    UIReturnKeyDone,
    UIReturnKeyEmergencyCall,
    UIReturnKeyContinue NS_ENUM_AVAILABLE_IOS(9_0),
};
UIKeyboardType键盘类型
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
typedef NS_ENUM(NSInteger, UIKeyboardType) {
    UIKeyboardTypeDefault,       

    UIKeyboardTypeASCIICapable,      

    UIKeyboardTypeNumbersAndPunctuation, 

    UIKeyboardTypeURL,    

    UIKeyboardTypeNumberPad,  

    UIKeyboardTypePhonePad,             

    UIKeyboardTypeNamePhonePad, 

    UIKeyboardTypeEmailAddress,
  
    UIKeyboardTypeDecimalPad ,

    UIKeyboardTypeWebSearch ,

    UIKeyboardTypeAlphabet = UIKeyboardTypeASCIICapable, 
};
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//输入框中是否有个叉号,在什么时候显示,用于一次性删除输入框中的内容
  text.clearButtonMode = UITextFieldViewModeAlways;

//每输入一个字符就变成点 用语密码输入
  text.secureTextEntry = YES;

//是否纠错
  text.autocorrectionType = UITextAutocorrectionTypeNo;
 
typedef enum {
    UITextAutocorrectionTypeDefault, 默认
    UITextAutocorrectionTypeNo,   不自动纠错
    UITextAutocorrectionTypeYes,  自动纠错
} UITextAutocorrectionType;
 
//再次编辑就清空
  text.clearsOnBeginEditing = YES; 

//设置为YES时文本会自动缩小以适应文本窗口大小.默认是保持原来大小,而让长文本滚动  
  textFied.adjustsFontSizeToFitWidth = YES;
 
//首字母是否大写
  text.autocapitalizationType = UITextAutocapitalizationTypeNone;
 
typedef enum {
    UITextAutocapitalizationTypeNone, 不自动大写
    UITextAutocapitalizationTypeWords,  单词首字母大写
    UITextAutocapitalizationTypeSentences,  句子的首字母大写
    UITextAutocapitalizationTypeAllCharacters, 所有字母都大写
} UITextAutocapitalizationType;


 //键盘外观
textView.keyboardAppearance=UIKeyboardAppearanceDefault;
typedef enum {
UIKeyboardAppearanceDefault, 默认外观,浅灰色
UIKeyboardAppearanceAlert,     深灰 石墨色
 
} UIReturnKeyType;

大体属性已经罗列完毕,以后想到再来补充

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016.04.02 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
UITextField设置leftView、圆角以及文字距离
今天在工作中,搭建一个登录界面,因为涉及到用户名和密码的输入,所以在iOS中我们免不了要用到UITextField这个常见的输入控件。
Originalee
2018/08/30
2.3K0
iOS UITextField 文本输入框
///UILabel 显示的文本只读,无法编辑,可以根据文字个数自动换行; ///UITextField 可编辑本文,但是无法换行,只能在一行显示;当点击键盘上的return时会收到一个事件做一些事情。 ////UITextView 可编辑文本,提供换行功能。
Lee坚武
2020/01/19
3.2K0
iOS8统一的系统提示控件——UIAlertController
        相信在iOS开发中,大家对UIAlertView和UIActionSheet一定不陌生,这两个控件在UI设计中发挥了很大的作用。然而如果你用过,你会发现这两个控件的设计思路有些繁琐,通过创建设置代理来进行界面的交互,将代码逻辑分割了,并且很容易形成冗余代码。在iOS8之后,系统吸引了UIAlertController这个类,整理了UIAlertView和UIActionSheet这两个控件,在iOS中,如果你扔使用UIAlertView和UIActionSheet,系统只是会提示你使用新的方法,iOS9中,这两个类被完全弃用,但这并不说明旧的代码将不能使用,旧的代码依然可以工作很好,但是会存在隐患,UIAlertController,不仅系统推荐,使用更加方便,结构也更加合理,作为开发者,使用新的警示控件,我们何乐而不为呢。这里有旧的代码的使用方法:
珲少
2018/08/16
6460
iOS8统一的系统提示控件——UIAlertController
iOS中UISearchBar(搜索框)使用总结
初始化:UISearchBar继承于UIView,我们可以像创建View那样创建searchBar
珲少
2018/08/16
2.6K0
iOS中UISearchBar(搜索框)使用总结
ios_UITextField-修改占位文字和光标的颜色,大小
一.设置占位文字的颜色 方法一:利用富文本 /** 手机号输入框 */ @property (weak, nonatomic) IBOutlet UITextField *phoneTextField; - (void)viewDidLoad { [super viewDidLoad]; // 创建一个富文本对象 NSMutableDictionary *attributes = [NSMutableDictionary dictionary]; // 设置富文本对象的颜
用户1219438
2018/12/26
1.2K0
iOS实践:打造一个可以快速索引的城市列表页1. 从plist中获取城市字典2. 对城市的首字母进行排序3. 设置边栏索引4. 关于约束的重要提示5. 完善:封装
相信绝大部分LBS的APP里面,大家都能看到一个带索引的城市列表页面,用来让用户选择所在城市。 我们就一步一步的来实现这个页面,最终效果如下: Paste_Image.png 最终我们会按照首字母汉语拼音对所有城市进行排序,可以通过右侧的首字母索引来快速定位到城市。 1. 从plist中获取城市字典 1.1 准备素材,下载文件 城市列表(带拼音首字母的),下载地址: 链接: https://pan.baidu.com/s/1nV**YJJ 密码: cjpw 1.2
stanbai
2018/06/28
2.4K0
iOS开发知识点3——键盘
莫空9081
2023/10/16
2080
iOS本地动态验证码生成
@property (strong, nonatomic) NSArray *dataArray;//字符素材数组
conanma
2021/05/10
6400
【IOS 开发】基本 UI 控件详解 (UISegmentedControl | UIImageView | UIProgressView | UISlider | UIAlertView )
转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/50163725
韩曙亮
2023/03/27
3.3K0
【IOS 开发】基本 UI 控件详解 (UISegmentedControl | UIImageView | UIProgressView | UISlider | UIAlertView )
iOS UITextField详解
除了UITextField对象的风格选项,你还可以定制化UITextField对象,为他添加许多不同的重写方法,来改变文本字段的显示行为。这些方法都会返回一个CGRect结构,制定了文本字段每个部件的边界范围。以下方法都可以重写。
码客说
2019/10/22
1.8K0
iOS UITextField 使用与方法解读
UITextField是IOS开发中用户交互中重要的一个控件,常被用来做账号密码框,输入信息框等。
珲少
2018/08/15
1.2K0
1.注册或登录页面设计:UILabel,UIButton,UITextField
学习iOS开发已经有一段时日了,之前一直没有系统的对iOS开发的相关知识进行归纳总结,导致很多知识点云里雾里在脑子里形不成iOS开发的思想,现将自己在学习过程中遇到的一些知识进行总结,希望能对iOS初学者能有一定的帮助。最初学iOS的时候苦于没有大神指点,全靠自己一点点摸索,确实走了很多弯路,不希望还有小伙伴跟我一样走过多的弯路。   由于本人只是从去年11月份才开始玩iOS(附上自己的学习路线,如下图),受限于能力,难免有一些不完善或不恰当的地方,希望大神们多多见谅,勿拍砖,有不足或需要完善的地方也希望
猿人谷
2018/01/17
2.4K0
1.注册或登录页面设计:UILabel,UIButton,UITextField
iOS-UITextField 全面解析iOS中UITextField 使用全面解析UITextField的代理方法通知UITextField 在storyboard 中设置属性
iOS中UITextField 使用全面解析 建议收藏,用到的时候来这里一查就都明白了 //初始化textfield并设置位置及大小 UITextField *text = [[UITextField alloc]initWithFrame:CGRectMake(20, 20, 130, 30)]; //设置边框样式,只有设置了才会显示边框样式 text.borderStyle = UITextBorderStyleRoundedRect; typedef NS_ENUM(NSInteger, UI
xx_Cc
2018/05/10
7.3K0
iOS_输入text处理 和 键盘Type
2.UIKeyboardTypeASCIICapable     // 显示可以输入ASCII字符的键盘。
mikimo
2022/07/20
1K0
iOS_输入text处理 和 键盘Type
iOS-自定义TextField(解决输入限制,键盘弹出问题)
Demo截屏 项目由来,最近我开发的项目中,存在很多输入框,它们都有输入限制,比如帐号(限制6位)、密码(限制16位)、手机号(限制只输入数字,11位)、身份证号(限制只输入数字和字母,18位),金额(限制浮点数)、备注(限制200字)等,类似的输入框还有很多,刚开始我使用UITextField,再加上限制用户输入又是很麻烦的事情,所以一遇到有输入框的vc,就会有大量的限制代码,并且很多都是重复的。在这种情况下,我考虑封装一个TextField,用于解决限制用户输入的功能,顺便在把键盘弹出的问题也解决了 所
用户2215591
2018/06/29
1.6K0
UIAlertView、UIActionSheet、UIAlertController使用
其中,"查看"的buttonIndex == 1,"评论"的buttonIndex == 2,"取消"的buttonIndex == 0
VV木公子
2018/06/05
6.3K0
编码篇-iOS开发中的奇巧小伎
最近搜集了自己以前的笔记中的一些小知识点,归为这篇文章,都是亲测有效的奇巧小伎,当你使用到时,你会大呼过瘾的。
進无尽
2018/09/12
5.4K0
编码篇-iOS开发中的奇巧小伎
iOS学习——UIAlertController详解
  在开发中,弹出提示框是必不可少的。这两天项目中统一对已经被iOS API废弃的UIAlertView和UIActionSheet进行替换,我们知道,UIAlertView和UIActionSheet都已经被iOS的API所废弃了。在两者的API中都建议用UIAlertController替代,并通过设置不同的类型风格来选择是原先的UIAlertView或UIActionSheet的形式。   之前项目中一直用的都是原先的UIAlertView和UIActionSheet风格,所以对UIAlertCont
mukekeheart
2018/03/01
3.4K0
iOS学习——UIAlertController详解
iOS UI控件了解一下
5. UIView的操作方法 1)添加视图 UIView的addSubview:方法可以添加子视图,对于同一个视图的所有子视图来讲,后添加的子视图会把已加的子视图盖在下面。 UIView提供了其他添加视图的方法(详见下表):
用户5521279
2020/11/25
2.7K0
iOS UI控件了解一下
常用开发技巧系列(一)
前言:         在我们iOS开发的过程中,你要是知道一些特别的小技巧的话,其实是可以帮你省很多事的,当然这东西也不需要我们专门去记,估计没有几个开发人员喜欢死记硬背,有需要,上网找,边学边用才是技巧的正确的打开方式。毕竟,这东西也是一个随着时间去积累总结的一个过程。这里总结了一些平时积累到的一些开发的小技巧,其实有一些要是碰不到那个问题我也记不起来,所以打算一直更新下去,把碰到的小技巧一点点的都总结起来,把它最后做成一个系列。你要有什么好的,欢迎在下面评论里展示出来给大家看,大家相互学习。 一:给凡
Mr.RisingSun
2018/01/12
8930
常用开发技巧系列(一)
推荐阅读
相关推荐
UITextField设置leftView、圆角以及文字距离
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文