IOS UI学习教程之设置UITextField各种属性

UITextField是IOS中非常常用的一个控件,用来接收用户输入信息,完成应用和用户的交互。它的主要属性设置如下:

//初始化textfield并设置位置及大小
 UITextField *text = [[UITextField alloc]initWithFrame:CGRectMake(20, 20, 130, 30)];

//设置边框样式,只有设置了才会显示边框样式
 text.borderStyle = UITextBorderStyleRoundedRect;

 typedef enum {
 UITextBorderStyleNone,
 UITextBorderStyleLine,
 UITextBorderStyleBezel,
 UITextBorderStyleRoundedRect
 } UITextBorderStyle;

//设置输入框的背景颜色,此时设置为白色 如果使用了自定义的背景图片边框会被忽略掉
 text.backgroundColor = [UIColor whiteColor];

//设置背景
 text.background = [UIImage imageNamed:@"dd.png"];

//设置背景
 text.disabledBackground = [UIImage imageNamed:@"cc.png"];

//当输入框没有内容时,水印提示 提示内容为password
 text.placeholder = @"password";

//设置输入框内容的字体样式和大小
 text.font = [UIFont fontWithName:@"Arial" size:20.0f];

//设置字体颜色
 text.textColor = [UIColor redColor];

//输入框中是否有个叉号,在什么时候显示,用于一次性删除输入框中的内容
 text.clearButtonMode = UITextFieldViewModeAlways;

typedef enum {
 UITextFieldViewModeNever, 重不出现
 UITextFieldViewModeWhileEditing, 编辑时出现
 UITextFieldViewModeUnlessEditing, 除了编辑外都出现
 UITextFieldViewModeAlways 一直出现
} UITextFieldViewMode;

//输入框中一开始就有的文字
 text.text = @"一开始就在输入框的文字";

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

//是否纠错
 text.autocorrectionType = UITextAutocorrectionTypeNo;

typedef enum {
 UITextAutocorrectionTypeDefault, 默认
 UITextAutocorrectionTypeNo, 不自动纠错
 UITextAutocorrectionTypeYes, 自动纠错
} UITextAutocorrectionType;

//再次编辑就清空
 text.clearsOnBeginEditing = YES; 

//内容对齐方式
 text.textAlignment = UITextAlignmentLeft;

//内容的垂直对齐方式 UITextField继承自UIControl,此类中有一个属性contentVerticalAlignment
 text.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;

//设置为YES时文本会自动缩小以适应文本窗口大小.默认是保持原来大小,而让长文本滚动
 textFied.adjustsFontSizeToFitWidth = YES;

//设置自动缩小显示的最小字体大小
 text.minimumFontSize = 20;

//设置键盘的样式
 text.keyboardType = UIKeyboardTypeNumberPad;

typedef enum {
 UIKeyboardTypeDefault,  默认键盘,支持所有字符
 UIKeyboardTypeASCIICapable, 支持ASCII的默认键盘
 UIKeyboardTypeNumbersAndPunctuation, 标准电话键盘,支持+*#字符
 UIKeyboardTypeURL,   URL键盘,支持.com按钮 只支持URL字符
UIKeyboardTypeNumberPad,    数字键盘
UIKeyboardTypePhonePad,  电话键盘
 UIKeyboardTypeNamePhonePad, 电话键盘,也支持输入人名
UIKeyboardTypeEmailAddress, 用于输入电子 邮件地址的键盘
UIKeyboardTypeDecimalPad,  数字键盘 有数字和小数点
 UIKeyboardTypeTwitter,  优化的键盘,方便输入@、#字符
 UIKeyboardTypeAlphabet = UIKeyboardTypeASCIICapable,
} UIKeyboardType;

//首字母是否大写
 text.autocapitalizationType = UITextAutocapitalizationTypeNone;

typedef enum {
 UITextAutocapitalizationTypeNone, 不自动大写
 UITextAutocapitalizationTypeWords, 单词首字母大写
 UITextAutocapitalizationTypeSentences, 句子的首字母大写
 UITextAutocapitalizationTypeAllCharacters, 所有字母都大写
} UITextAutocapitalizationType;

//return键变成什么键
 text.returnKeyType =UIReturnKeyDone;

typedef enum {
 UIReturnKeyDefault, 默认 灰色按钮,标有Return
 UIReturnKeyGo,  标有Go的蓝色按钮
 UIReturnKeyGoogle,
标有Google的蓝色按钮,用语搜索
 UIReturnKeyJoin,
标有Join的蓝色按钮
 UIReturnKeyNext,
标有Next的蓝色按钮
 UIReturnKeyRoute,
标有Route的蓝色按钮
 UIReturnKeySearch,
标有Search的蓝色按钮
 UIReturnKeySend,
标有Send的蓝色按钮
 UIReturnKeyYahoo,
标有Yahoo的蓝色按钮
 UIReturnKeyYahoo,
标有Yahoo的蓝色按钮
 UIReturnKeyEmergencyCall, 紧急呼叫按钮
} UIReturnKeyType;

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

} UIReturnKeyType;

//设置代理 用于实现协议
 text.delegate = self;

//把textfield加到视图中
 [self.window addSubview:text];

//最右侧加图片是以下代码 左侧类似
 UIImageView *image=[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"right.png"]];
 text.rightView=image;
 text.rightViewMode = UITextFieldViewModeAlways; 

typedef enum {
 UITextFieldViewModeNever,
 UITextFieldViewModeWhileEditing,
 UITextFieldViewModeUnlessEditing,
 UITextFieldViewModeAlways
} UITextFieldViewMode;

//按return键键盘往下收 becomeFirstResponder

类要采用UITextFieldDelegate协议

text.delegate = self; 声明text的代理是我,我会去实现把键盘往下收的方法 这个方法在UITextFieldDelegate里所以我们要采用UITextFieldDelegate这个协议

- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
 [text resignFirstResponder]; //主要是[receiver resignFirstResponder]在哪调用就能把receiver对应的键盘往下收
 return YES;
}

重写绘制行为
除了UITextField对象的风格选项,你还可以定制化UITextField对象,为他添加许多不同的重写方法,来改变文本字段的显示行为。这些方法都会返回一个CGRect结构,制定了文本字段每个部件的边界范围。以下方法都可以重写。

– textRectForBounds:   //重写来重置文字区域
– drawTextInRect:  
//改变绘文字属性.重写时调用super可以按默认图形属性绘制,若自己完全重写绘制函数,就不用调用super了.
– placeholderRectForBounds:  
//重写来重置占位符区域
– drawPlaceholderInRect:  
//重写改变绘制占位符属性.重写时调用super可以按默认图形属性绘制,若自己完全重写绘制函数,就不用调用super了.
– borderRectForBounds:  
//重写来重置边缘区域
– editingRectForBounds:  
//重写来重置编辑区域
– clearButtonRectForBounds:  
//重写来重置clearButton位置,改变size可能导致button的图片失真
– 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;
}

以上就是本文的全部内容,希望对大家学习IOS程序设计有所帮助。

(0)

相关推荐

  • iOS开发之自定义UITextField的方法

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

  • iOS UIAlertController中UITextField添加晃动效果与边框颜色详解

    前言 大家都知道在iOS8中引入了UIAlertController,通过UIAlertController可以方便的添加文本框进行编辑,但是,在输入错误的内容时,如何对用户进行提醒就成了问题,因为UIAlertController中的所有UIAlertAction都会导致UIAlertController的消失.这里,我就描述两种提示的方法,分别是晃动文本框和修改边框的颜色.下面话不多说了,来一起看看详细的实现方法吧. 晃动UITextField 晃动UITextField其实就是对它添加一个

  • iOS 中 使用UITextField格式化银行卡号码的解决方案

    今天做格式化银行卡,避免重复造轮子,找度娘查了下,看到一个不错的实现方式,记录下来,并附带实现思路 #pragma mark - UITextFieldDelegate UITextField键入字符后调用 - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { //拿到为改变前的字符串 NSStri

  • iOS UITextField最大字符数和字节数的限制详解

    前言 这里我给大家几组测试用例可以一试,为啥不好用. 1.限制10个字节,输入2个Emoj之后是8个字节(一个Emoj是4个字节),此时再输入一个中文,看看结果如何(中文的UTF8占3个字节) 2.限制5个字符,一个Emoj是2个字符,其他都是一个.此时输入两个Emoj,再输入中文,然后中文联想试试. 就目前的情况来说,看了很多资料,并没有一个通用的能限制字符数和字节数的封装.这里全面进行了总结,并进行了封装.欢迎大家下载. 一. 字符限制 1. 错误方法 常见的这种方法是错误的,会导致Emoj

  • 解决iOS UITextField 编辑时文本偏移问题

    1.在cell中添加UITextField,在编辑的时候总是出现文本偏移问题,编辑结束时回复正常,解决方式如下: (1)代码创建UITextField,并添加上去,设置textField的一些属性: - (UITextField *)textField{ if (_textField == nil) { _textField = [UITextField new]; _textField.borderStyle = UITextBorderStyleNone; _textField.conten

  • iOS改变UITextField占位文字颜色的三种方法

    有时,UITextField自带的占位文字的颜色太浅或者不满足需求,所以需要修改,而UITextField没有直接的属性去修改占位文字的颜色,所以只能通过其他间接方式去修改. 例如:系统默认的占位文字颜色太浅 需要加深颜色,或者改变颜色 示例: 核心代码 方法一:通过attributedPlaceholder属性修改占位文字颜色 CGFloat viewWidth = self.view.bounds.size.width; CGFloat textFieldX = 50; CGFloat te

  • iOS App开发中UITextField组件的常用属性小结

    重点属性 在 Xcode 中使用 IB 给视图拖上去一个文本框后,选中文本框,可以在Attribute Inspector中设置其各种属性. Attribute Inspector 分为三部分,分别是 Text Field.Control 和 View 部分.我们重点看看 Text Field 部分. Text Field 部分有以下选项: 1.Text :设置文本框的默认文本. 2.Placeholder : 可以在文本框中显示灰色的字,用于提示用户应该在这个文本框输入什么内容.当这个文本框中

  • iOS中修改UITextField占位符字体颜色的方法总结

    前言 最近学了UITextField控件, 感觉在里面设置占位符非常好, 给用户提示信息, 于是就在想占位符的字体和颜色能不能改变呢?下面是小编的一些简单的实现,有需要的朋友们可以参考. 修改UITextField的占位符文字颜色主要有三个方法: 1.使用attributedPlaceholder属性 @property(nullable, nonatomic,copy) NSAttributedString *attributedPlaceholder NS_AVAILABLE_IOS(6_0

  • iOS输入框(UITextField)密码明暗文切换方法

    在做明暗文切换(密码输入框)的时候遇见一个坑,就是切换secureTextEntry的时候,输入框的光标会偏移,下面列出了一个解决办法及一种明暗文切换的方法 - (IBAction)pwdTextSwitch:(UIButton *)sender { // 前提:在xib中设置按钮的默认与选中状态的背景图 // 切换按钮的状态 sender.selected = !sender.selected; if (sender.selected) { // 按下去了就是明文 NSString *temp

  • IOS UI学习教程之设置UITextField各种属性

    UITextField是IOS中非常常用的一个控件,用来接收用户输入信息,完成应用和用户的交互.它的主要属性设置如下: //初始化textfield并设置位置及大小 UITextField *text = [[UITextField alloc]initWithFrame:CGRectMake(20, 20, 130, 30)]; //设置边框样式,只有设置了才会显示边框样式 text.borderStyle = UITextBorderStyleRoundedRect; typedef enu

  • IOS UI学习教程之使用UIImageView控件制作动画

    本文实例为大家分享了IOS使用UIImageView控件制作动画的方法,供大家参考,具体内容如下 先添加40张tomcat的图片到资源列表中:名称为cat_eat0000.jpg到cat_eat0039.jpg. 1.定义所需控件 // 定义按钮,图片控件.可变数组对象 UIButton *actionbuttom; UIImageView *imageMove; NSMutableArray *imgsarray; 2.初始化各控件 // image动画 // 初始化UIImageView,大

  • IOS UI学习教程之使用代码创建button

    本文使用代码创建button分5个步骤,分别是: 1.定义一个按钮,根据定义位置不同可定义为局部变量或者全局变量: 2.初始化按钮,一般使用一个矩形初始化: 3.设置按钮控件的其他属性,如背景图片,或者背景颜色,或者按钮显示文字等属性: 4.添加响应事件并编写响应事件的函数内容: 5.把创建好的控件加载到窗口. 五个步骤具体操作见下图: 具体的代码如下: UIButton *btn; btn = [[UIButton alloc]initWithFrame:CGRectMake(0, 20, 4

  • IOS UI学习教程之区分NSBundle和NSURL(读取文件、写入文件)

    本文实例为大家区分NSBundle和NSURL,具体实现内容如下 在项目的工程中添加一个文件,本例程添加的是aa.txt,文件的内容为百度: www.baidu.com,现在要使用NSBundle和NSURL分别去获取内容,代码如下: // 读取文件内容 // 方法1:按照文件路径读取 NSString *pathBundle = [[NSBundle mainBundle]pathForResource:@"aa" ofType:@"txt"]; NSString

  • MyBatis学习教程(二)—如何使用MyBatis对users表执行CRUD操作

    上一篇文章MyBatis入门学习教程(一)-MyBatis快速入门中我们讲了如何使用Mybatis查询users表中的数据,算是对MyBatis有一个初步的入门了,今天讲解一下如何使用MyBatis对users表执行CRUD操作.在没奔主题之前,先给大家补充点有关mybatis和crud的基本知识. 什么是 MyBatis? MyBatis 是支持普通 SQL 查询,存储过程和高级映射的优秀持久层框架. MyBatis 消除了几乎所有的 JDBC 代码和参数的手工设置以及对结果集的检索.MyBa

  • mybatis框架入门学习教程

    MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装.MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录. 1.创建工程,导入jar包 创建一个java工程或者web工程都可以,然后导入mybatis的jar包和依赖包还有数据库的jar包,本人使用Oracle10g数据库

  • laravel学习教程之关联模型

    Eloquent: 关联模型 简介 数据库中的表经常性的关联其它的表.比如,一个博客文章可以有很多的评论,或者一个订单会关联一个用户.Eloquent 使管理和协作这些关系变的非常的容易,并且支持多种不同类型的关联:     一对一     一对多     多对多     远程一对多     多态关联     多态多对多关联 定义关联 Eloquent 关联可以像定义方法一样在 Eloquent 模型类中进行定义.同时,它就像 Eloquent 模型自身一样也提供了强大的查询生成器.这允许关联模

  • laravel学习教程之存取器

    前言 Laravel是一个简单优雅的PHP Web开发框架,可以将开发者从意大利面条式的代码中解放出来,通过简单.高雅.表达式语法开发出很棒的Web应用,那下面跟着小编一起来学习laravel中的存取器吧. Eloquent: 存取器简介 访问器和存储器允许你在获取或者设置 Eloquent 模型属性值时对其进行格式化操作.比如,你可能希望当一个值存储进数据库之前先对其进行 Laravel encrypter 进行加密操作,并且可以在你通过模型访问的时候自动的进行该属性的解密. 除了可自定义的的

  • MyBatis学习教程(四)-如何快速解决字段名与实体类属性名不相同的冲突问题

    在项目开发中,我们经常会遇到表中的字段名和表对应实体类的属性名称不一定都是完全相同的情况,下面小编给大家演示一下这种情况下的如何解决字段名与实体类属性名不相同的冲突问题,感兴趣的朋友一起学习吧. 一.准备演示需要使用的表和数据 CREATE TABLE orders( order_id INT PRIMARY KEY AUTO_INCREMENT, order_no VARCHAR(20), order_price FLOAT ); INSERT INTO orders(order_no, or

  • MyBatis入门学习教程(一)-MyBatis快速入门

    MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis .2013年11月迁移到Github. iBATIS一词来源于"internet"和"abatis"的组合,是一个基于Java的持久层框架.iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAO) 首先给大家介绍MyBatis的含义

随机推荐