IOS中文本框输入自动隐藏和自动显示
uilabe和UIText扩展方法
+(UILabel*)LabWithFrame:(CGRect)_rect
text:(NSString*)aText
textColor:(UIColor*)aColor
textAlign:(NSTextAlignment)aAlign
font:(UIFont*)aFont{
UILabel *lab = [[[UILabel alloc] initWithFrame:_rect] autorelease];
lab.backgroundColor = [UIColor clearColor];
if ([aText length] > )
lab.text = aText;
if (aColor)
lab.textColor = aColor;
if(aAlign)
lab.textAlignment = aAlign;
if (aFont)
lab.font = aFont;
return lab;
}
@end
@implementation UITextField (my)
+(UITextField*)TextFieldWithFrame:(CGRect)_rect
target:(id)target
text:(NSString*)aText
textColor:(UIColor*)aTextColor
textAlign:(NSTextAlignment)aAlign
placeHolder:(NSString*)holder
clearMode:(UITextFieldViewMode)aViewMode
{
UITextField *textField = [[[UITextField alloc] initWithFrame:_rect] autorelease];
textField.backgroundColor = [UIColor clearColor];
textField.delegate = target; if (aAlign)
textField.textAlignment = aAlign;
if ([aText length] > )
textField.text = aText;
if (aTextColor)
textField.textColor = aTextColor;
if (aViewMode)
textField.clearButtonMode = aViewMode;
if ([holder length] > )
textField.placeholder = holder;
textField.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter; return textField;
}
在viewdidLoad中初始化控件,并且把label放入到集合中
#import "UILabel+my.h"
#import "UITextField+my.h" #define KPadding 10
#define KLbWidth 100
#define KlbHeight 50
#define KFont 12
#define kTextHeight 30
@interface ViewController ()
{
UITextField *UserNameField;
UITextField *PassWordField;
UITextField *yzmField;
UILabel *lb;
}
//存放文本框的集合
@property(nonatomic,retain)NSMutableArray *UIElementLabArray;
//存放文本的标题
@property(nonatomic,retain)NSMutableArray *UIELementLabTitleArray;
//初始化存放所有uilabe的集合。
@property(nonatomic,retain)NSMutableArray *UIElementArray; @end
-(void)InitController{
UserNameField=[UITextField TextFieldWithFrame:CGRectMake(, , , ) target:nil text:@"" textColor:[UIColor blackColor] textAlign:NSTextAlignmentLeft placeHolder:@"" clearMode:UITextFieldViewModeWhileEditing];
UserNameField.borderStyle=UITextBorderStyleRoundedRect;
UserNameField.keyboardType=UIKeyboardTypeNumberPad;
[self.view addSubview:UserNameField];
PassWordField=[UITextField TextFieldWithFrame:CGRectMake(, , , ) target:nil text:@"" textColor:[UIColor blackColor] textAlign:NSTextAlignmentLeft placeHolder:@"" clearMode:UITextFieldViewModeWhileEditing];
PassWordField.borderStyle=UITextBorderStyleRoundedRect;
[self.view addSubview:PassWordField];
yzmField=[UITextField TextFieldWithFrame:CGRectMake(, , , ) target:nil text:@"" textColor:[UIColor blackColor] textAlign:NSTextAlignmentLeft placeHolder:@"" clearMode:UITextFieldViewModeWhileEditing];
yzmField.borderStyle=UITextBorderStyleRoundedRect;
[self.view addSubview:yzmField];
for (int i=; i<; i++) {
UILabel *lb1=[UILabel LabWithFrame:CGRectZero text:@"" textColor:[UIColor blackColor] textAlign:NSTextAlignmentRight font:[UIFont systemFontOfSize:KFont]];
[self.view addSubview:lb1];
[self.UIElementLabArray addObject:lb1];
}
}
- (UIImage *) ImageWithColor: (UIColor *) color frame:(CGRect)aFrame
{
UIGraphicsBeginImageContext(aFrame.size);
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetFillColorWithColor(context, [color CGColor]);
CGContextFillRect(context, aFrame); UIImage *theImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return theImage;
} - (void)viewDidLoad
{
[super viewDidLoad]; UIImage *image=[self ImageWithColor:[UIColor colorWithRed:/255.0f green:/255.0f blue:/255.0f alpha:] frame:self.view.bounds]; image= [image stretchableImageWithLeftCapWidth:image.size.width*0.5f topCapHeight:image.size.height*0.5f];
UIImageView *imageview=[[UIImageView alloc] initWithImage:image];
[self.view addSubview:imageview]; self.UIElementLabArray=[NSMutableArray array]; CGRect bRect=UIEdgeInsetsInsetRect(self.view.bounds, UIEdgeInsetsMake(KPadding, , KPadding, )); //每一行
CGRect rowRect;
//开始分割每一行
CGRectDivide(bRect, &rowRect, &bRect, KlbHeight, CGRectMinYEdge);
CGRect leftRect,rightRect; //开始分割每一列
CGRectDivide(rowRect, &leftRect, &rightRect, KLbWidth, CGRectMinXEdge); lb=[UILabel LabWithFrame:leftRect text:@"username" textColor:[UIColor blackColor] textAlign:NSTextAlignmentRight font:[UIFont systemFontOfSize:KFont]];
[self.view addSubview:lb]; CGRect txtdiv=UIEdgeInsetsInsetRect(rightRect, UIEdgeInsetsMake(, KPadding, KPadding, ));
UITextField * text=[UITextField TextFieldWithFrame:txtdiv target:self text:@"" textColor:[UIColor blackColor] textAlign:NSTextAlignmentLeft placeHolder:@"input" clearMode:UITextFieldViewModeWhileEditing];
text.borderStyle=UITextBorderStyleRoundedRect;
[self.view addSubview:text]; [self InitController]; }
#pragma mark-UITextField delegate
-(void)textFieldDidEndEditing:(UITextField *)textField{
//初始化数组
self.UIElementArray=[NSMutableArray array];
self.UIELementLabTitleArray=[NSMutableArray array];
//得到数据
NSArray *data=@[@"UN",@"PD",@"yzm"];
for (int i=;i<data.count;i++) {
NSString *str=data[i];
if([str rangeOfString:@"UN"].location!=NSNotFound){
[self.UIElementArray addObject:UserNameField];//添加文本框的控件
[self.UIELementLabTitleArray addObject:data[i]];//添加对应(lable)的title
}
else if([str rangeOfString:@"PD"].location!=NSNotFound){
[self.UIElementArray addObject:PassWordField];//添加文本框的控件
[self.UIELementLabTitleArray addObject:data[i]];
}
else if([str rangeOfString:@"yzm"].location!=NSNotFound){
[self.UIElementArray addObject:yzmField];//添加文本框的控件
[self.UIELementLabTitleArray addObject:data[i]];
}
}
CGFloat top=lb.bounds.origin.y+lb.bounds.size.height;
CGFloat left=lb.bounds.origin.x;
CGRect rect=UIEdgeInsetsInsetRect(self.view.bounds, UIEdgeInsetsMake(top, left, , ));//开始规划显示控件的Rect
CGRect rowRect;
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.3];
for (int i=; i<self.UIElementArray.count; i++) {
//开始分割每一行,brect每一行的高度
CGRectDivide(rect, &rowRect, &rect,KlbHeight, CGRectMinYEdge);
CGRect leftRect,rightRect;//leftRect代表label的rect,right代表textField的rect
//开始分割行中列
CGRectDivide(rowRect, &leftRect, &rightRect, KLbWidth, CGRectMinXEdge);
UILabel *lbt=self.UIElementLabArray[i];
lbt.text=self.UIELementLabTitleArray[i];
lbt.frame=leftRect;
//设置每一行的高度
CGRect txtRect=UIEdgeInsetsInsetRect(rightRect, UIEdgeInsetsMake(, KPadding, , KPadding));
UITextField *txt=self.UIElementArray[i];
txt.frame=txtRect;
}
[UIView commitAnimations];
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:];
[UIView commitAnimations];
}
-(BOOL)textFieldShouldClear:(UITextField *)textField{
[UIView animateWithDuration:0.3 animations:^{
for(UILabel *label in self.UIElementLabArray){
label.frame=CGRectZero;
}
for (UITextField *txt in self.UIElementArray) {
txt.frame=CGRectMake(, , ,);
}
}];
return YES;
}
IOS中文本框输入自动隐藏和自动显示的更多相关文章
- 使用jquery实现文本框输入特效:文字逐个显示逐个消失反复循环
前两天看到某个网站上的输入框有个小特效:文字逐个显示,并且到字符串最大长度后,逐个消失,然后重新循环显示消失,循环显示字符串数组.我对这个小特效有点好奇,于是今天自己尝试用jquery写一个简单的小d ...
- 转:zTree树控件扩展篇:巧用zTree控件实现文本框输入关键词自动模糊查找zTree树节点实现模糊匹配下拉选择效果
是否可以借助于zTree实现文本框输入关键词自动模糊匹配zTree下拉树,然后选择下拉树内节点显示在文本框内且隐藏下拉树. 看到这个需求脑子里头大致已经想到了要如何实现这样一个需求,当时是限于时间问题 ...
- 转摘:ashx+jquery-autocomplete文本框输入提示功能Asp.net
引入所需文件 <script type="text/javascript" src="JS/jquery-1.8.2.min.js"></sc ...
- 实时监听文本框输入 oninput、onchange与onpropertychange事件的用法和区别
前端页面开发的很多情况下都需要实时监听文本框输入,比如腾讯微博编写140字的微博时输入框hu9i动态显示还可以输入的字数.过去一般都使用onchange/onkeyup/onkeypress/onke ...
- js入门-文本框输入特定内容控制另一个文本框
在填写表单时,有时需要某些文本框隐藏,当一文本框输入特定内容时才会显示隐藏的文本框,这一功能可以用onchange事件或oninput事件实现.下面对比下两种方法实现的区别: onchange()定义 ...
- 监听文本框输入oninput和onpropertychange事件
前端页面开发的很多情况下都需要实时监听文本框输入,比如腾讯微博编写140字的微博时输入框动态显示还可以输入的字数.过去一般都使用onchange/onkeyup/onkeypress/onkeydow ...
- JS和vue文本框输入改变p标签的内容测试
文本框输入,p标签的内容自动变成文本框的内容,如下是三种方法的测试: 方法1:JS里的onchange,当文本框内容改变事件,该事件里写的方法是,获取p标签本身,然后获取文本框的值,赋值给变量,最后给 ...
- 监听文本框输入开发仿新浪微博限制输入字数的textarea插件
监听文本框输入 Firefox.Chrome.IE9,IE10 均支持 oninput 事件,此外所有版本的 IE 均支持 onpropertychange 事件. oninput 事件在用户输入.退 ...
- 【学习】文本框输入监听事件oninput
真实项目中遇到的,需求是:一个文本框,一个按钮,当文本框输入内容时,按钮可用,当删除内容时,按钮不可用. 刚开始用的focus和blur, $(".pay-text").focus ...
随机推荐
- scrapy框架系列 (2) 一个简单案例
学习目标 创建一个Scrapy项目 定义提取的结构化数据(Item) 编写爬取网站的 Spider 并提取出结构化数据(Item) 编写 Item Pipelines 来存储提取到的Item(即结构化 ...
- [leetcode]Palindrome Partitioning II @ Python
原题地址:https://oj.leetcode.com/problems/palindrome-partitioning-ii/ 题意: Given a string s, partition s ...
- Jquery取得iframe中元素的几种方法(转载)
iframe在复合文档中经常用到,利用jquery操作iframe可以大幅提高效率,这里收集一些基本操作 DOM方法:父窗口操作IFRAME:window.frames["iframeSon ...
- MFC中如何给静态文本框添加消息响应
需要两个步骤: 第一个: 是改变它的ID(默认情况下所有的静态文本框的ID都为IDC_STATIC,你需要改变他的ID为其他的值). 第二个: 是在它的属性对话框中选中Notify选项,VS是将该属性 ...
- 大数据开发实战:Hive优化实战2-大表join小表优化
4.大表join小表优化 和join相关的优化主要分为mapjoin可以解决的优化(即大表join小表)和mapjoin无法解决的优化(即大表join大表),前者相对容易解决,后者较难,比较麻烦. 首 ...
- 浅谈压缩感知(六):TVAL3
这一节主要介绍一下压缩感知中的一种基于全变分正则化的重建算法——TVAL3. 主要内容: TVAL3概要 压缩感知方法 TVAL3算法 快速哈达玛变换 实验结果 总结 1.TVAL3概要 全称: To ...
- cookie相关的函数
浏览器中,使用JavaScript操作cookie的两个工具函数. 设置cookie值, 必须的參数是name和value,可选參数是过期天数和域名. // 设置cookie值(key,value,过 ...
- Android ListView 和 ***Adapter 从本地/网络获取歌曲列表
本文内容 环境 项目结构 测试数据 演示 1:SimpleAdapter 演示 2:BaseAdapter 演示 3:CustomLazyList 演示 4:CustomLazyCompleteLis ...
- powerdesigner 生成数据库脚本
PowerDesigner导出所有SQL脚本 操作:Database=>Generate Database PowerDesigner怎么导出建表sql脚本 1 按照数据库类型,切换数据库. D ...
- linux安装experss搭建本地服务器
准备nodejs和npm 保证本地安装了nodeJS和npm,如果没有安装的话,通过下面的命令进行安装: sudo apt-get install nodejs //安装nodeJS sudo apt ...