iOS 之UITextFiled/UITextView小结
一:编辑被键盘遮挡的问题
参考自:http://blog.csdn.net/windkisshao/article/details/21398521
1.自定方法 ,用于移动视图
-(void)moveInputBarWithKeyboardHeight:(float)_CGRectHeight withDuration:(NSTimeInterval)_NSTimeInterval;
2.注册监听
NSNotificationCenter *defaultCenter = [NSNotificationCenter defaultCenter];
[defaultCenter selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil];
[defaultCenter addObserver:self selector:@selector(keyboardWillHide:) name:UIKeyboardWillHideNotification object:nil];
3.实现方法
- (void)keyboardWillShow:(NSNotification *)notification {
NSDictionary *userInfo = [notification userInfo];
NSValue* aValue = [userInfo objectForKey:UIKeyboardFrameEndUserInfoKey];
CGRect keyboardRect = [aValue CGRectValue];
NSValue *animationDurationValue = [userInfo objectForKey:UIKeyboardAnimationDurationUserInfoKey];
NSTimeInterval animationDuration;
[animationDurationValue getValue:&animationDuration];
if(nil==self.myTextView) return;// self.editTextView 为被键盘遮挡住的控件
CGRect rect = self.myTextView.frame;
float textY = rect.origin.y + rect.size.height;
float bottomY = SCREENHEIGHT - textY;//得到下边框到底部的距离 SCREENHEIGHT 为当前设备的高度
if(bottomY >=keyboardRect.size.height ){//键盘默认高度,如果大于此高度,则直接返回
return;
}
float moveY = keyboardRect.size.height - bottomY;
[self moveInputBarWithKeyboardHeight:moveY withDuration:animationDuration];
}
- (void)keyboardWillHide:(NSNotification *)notification {
NSDictionary* userInfo = [notification userInfo];
NSValue *animationDurationValue = [userInfo objectForKey:UIKeyboardAnimationDurationUserInfoKey];
NSTimeInterval animationDuration;
[animationDurationValue getValue:&animationDuration];
[self moveInputBarWithKeyboardHeight:0.0 withDuration:animationDuration];
}
-(void)moveInputBarWithKeyboardHeight:(float)_CGRectHeight withDuration:(NSTimeInterval)_NSTimeInterval{
CGRect rect1 = self.view.frame;
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:_NSTimeInterval];
rect1.origin.y = -_CGRectHeight;//view往上移动
self.view.frame = rect1;
[UIView commitAnimations];
}
二: 键盘
(1)键盘类型
UIKeyboardTypeDefault, // 默认键盘:支持所有字符
- UIKeyboardTypeASCIICapable, // 支持ASCII的默认键盘
- UIKeyboardTypeNumbersAndPunctuation, // 标准电话键盘,支持+*#等符号
- UIKeyboardTypeURL, // URL键盘,有.com按钮;只支持URL字符
- UIKeyboardTypeNumberPad, //纯数字键盘 (不带小数点)
- UIKeyboardTypeDecimalPad //数字键盘 (带小数点)
- UIKeyboardTypePhonePad, // 电话键盘
- UIKeyboardTypeNamePhonePad, // 电话键盘,也支持输入人名字
- UIKeyboardTypeEmailAddress, // 用于输入电子邮件地址的键盘
- UIKeyboardTypeWebSearch //用于搜索
- UIKeyboardTypeAlphabet
如: self.uIphone.keyboardType = UIKeyboardTypeNumberPad;
祥见:http://blog.csdn.net/crazyzhang1990/article/details/39965931
(2) return键的类型
UIReturnKeyDefault, 默认 灰色按钮,标有Return
UIReturnKeyGo, 标有Go的蓝色按钮 (完成,可用于填写资料的最后一项)
UIReturnKeyGoogle,标有Google的蓝色按钮,用语搜索
UIReturnKeyJoin,标有Join的蓝色按钮
UIReturnKeyNext,标有Next的蓝色按钮 (可用于登录/注册/填写地址-->下一步)
UIReturnKeyRoute,标有Route的蓝色按钮
UIReturnKeySearch,标有Search的蓝色按钮 (可用于搜索)
UIReturnKeySend,标有Send的蓝色按钮
UIReturnKeyYahoo,标有Yahoo的蓝色按钮
UIReturnKeyYahoo,标有Yahoo的蓝色按钮
UIReturnKeyEmergencyCall, 紧急呼叫按钮
如:
self.uIphone.keyboardType = UIKeyboardTypeNumberPad;
(3) 点击return建响应事件
A.UITextField --> - (BOOL)textFieldShouldReturn:(UITextField *)textField{
如: 添加地址
- (BOOL)textFieldShouldReturn:(UITextField *)textField{
if(textField.tag==10) //下一步 (姓名)
{
[self.uName resignFirstResponder];
[self.uIphone becomeFirstResponder];
}else if(textField.tag==11) //下一步 (电话)
{
[self.uIphone resignFirstResponder];
[self.reciveAddress becomeFirstResponder];
}else if(textField.tag==100) //完成(地址填完之后可直接调用接口)
{
[self.reciveAddress resignFirstResponder];
[self addBtn:nil];
}
return YES;
}
B.UITextView --> - (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
如:
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text{
if ([text isEqualToString:@"\n"]){ //判断输入的字是否是回车,即按下return
//在这里做你响应return键的代码
[self addBtn:nil];
return NO; //这里返回NO,就代表return键值失效,即页面上按下return,不会出现换行,如果为yes,则输入页面会换行
}
return YES;
}
参考自:http://blog.sina.com.cn/s/blog_59fb90df010176re.html
三:UITextField小结
1.自定义UITextField 左边加图标(如:登录)
UIImageView *i=[[UIImageView alloc]initWithFrame:CGRectMake(15, 10, 21, 21)];
[i setImage:[UIImage imageNamed:@"yh"]];
UIView *userLeftView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 40, 38)];
[userLeftView addSubview:i];
self.userName.leftView=userLeftView;
self.userName.leftViewMode=UITextFieldViewModeAlways;
2.设置自定义UITextField 的Placeholder颜色
UIColor *color = [UIColor blue];
self.userName.attributedPlaceholder = [[NSAttributedString alloc] initWithString:@" 手机号" attributes:@{NSForegroundColorAttributeName: color}];
四:UITextView小结
1.设置Placeholder
@property (nonatomic,strong) UILabel *proText1;
self.automaticallyAdjustsScrollViewInsets = NO;
[self.leaveMessage setDelegate:self];
UILabel *lbl=[[UILabel alloc]initWithFrame:CGRectMake(self.leaveMessage.frame.origin.x+10, self.leaveMessage.frame.origin.y-35, self.leaveMessage.bounds.size.width, 100)];
lbl.text=@" 感谢您留下宝贵的意见....";
[lbl setFont:[UIFont systemFontOfSize:15.0]];
lbl.enabled=NO;
self.proText1=lbl;
[self.view addSubview:lbl];
#pragma mark -----textView的代理事件
-(void)textViewDidChange:(UITextView *)textView
{
// textView.text = [textView.text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
if (textView.text.length == 0) {
self.proText1.text = @" 感谢您留下宝贵的意见....";
}else{
self.proText1.text = @"";
}
}
2.去掉空格以及换行
NSString *content = [textView.text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
有的时候由于不正确的操作,直接将textView.text作为参数传 到服务器,可能会产生意想不到的错误,因此就需要加这个对字符串进行一下处理
更多请参考:http://www.41443.com/HTML/iphone/20141109/204260.html
iOS 之UITextFiled/UITextView小结的更多相关文章
- ios 浅谈一下UITextFiled UITextView 在tableview的cell上边展示
最近在项目中.要做到在tableview的cell上边加一个输入框.允许用户输入. 1.我首先选的是在uitextView 然后在通知键盘出现的时候,将tableview的内容设置在键盘的上边.但是 ...
- ios学习开发阶段小结
总结一下,开发了1个月10天的ios经验. 先晒成绩单:两个实验性质的app,一个wifi管家,一个图片壁纸软件 技术小结: 1.熟悉基本的各种ns语法:#import,#include,@class ...
- iOS开发-UITextView文字排版
UITextView文本排版 1.配置NSMutableParagraphStyle NSMutableParagraphStyle *MParaStyle = [[NSMutableParagrap ...
- IOS开发,知识点小结,ios开发中经常使用的宏定义总结
IOS开发,从应用跳转到用浏览器打开网页: [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http:// ...
- Unity3D在IOS上的优化小结
http://www.58player.com/blog-635-122.html 最近一段時間一直在做Unity 在IOS設備上的資源優化,結合Unity的官方文檔以及自己遇到的實際問題,我把自己認 ...
- iOS——数据安全性问题小结
在移动互联网快速发展的今天,iOS应用直接运行在用户的手机上,与运行在服务器后台服务相比,更有可能被黑客攻击. a.网络安全: 1.1 安全地传输用户密码 事先生成一对用于加密的公私钥,客户端登录的时 ...
- IOS开发之—— UITextView禁止Emoji输入
UITextView代理方法:判断 -(void)textViewDidEndEditing:(UITextView *)textView{ if ([self stringContai ...
- iOS开发之UITextView,设置textView的行间距及placeholder
一.设置textView的行间距 1.如果只是静态显示textView的内容为设置的行间距,执行如下代码: // textview 改变字体的行间距 NSMutableParagraph ...
- iOS开发——设备信息小结(未完待续...)
1.获取设备的信息 UIDevice *device = [[UIDevice alloc] init]; NSString *name = device.name; //获取设备所有者 ...
随机推荐
- Sql Server系列:分区表操作
1. 分区表简介 分区表在逻辑上是一个表,而物理上是多个表.从用户角度来看,分区表和普通表是一样的.使用分区表的主要目的是为改善大型表以及具有多个访问模式的表的可伸缩性和可管理性. 分区表是把数据按设 ...
- 在一个空ASP.NET Web项目上创建一个ASP.NET Web API 2.0应用
由于ASP.NET Web API具有与ASP.NET MVC类似的编程方式,再加上目前市面上专门介绍ASP.NET Web API 的书籍少之又少(我们看到的相关内容往往是某本介绍ASP.NET M ...
- Linux CentOS 配置JDK环境
一.下载JDK 下载JDK的方式有两种: 1.Linux中使用wget下载 1.使用命令安装wget yum install wget 2.下载 wget 'http://download.oracl ...
- 启用 Open vSwitch - 每天5分钟玩转 OpenStack(127)
Linux Bridge 和 Open vSwitch 是目前 OpenStack 中使用最广泛的两种虚机交换机技术. 前面各章节我们已经学习了如何用 Linux Bridge 作为 ML2 mech ...
- android键盘
在应用的开发过程中有不少的情况下会用到自定义键盘,例如支付宝的支付密码的输入,以及类似的场景.android系统给开发者们提供了系统键盘,KeyboardView,其实并不复杂,只是有些开发者不知道罢 ...
- angular2系列教程(八)In-memory web api、HTTP服务、依赖注入、Observable
大家好,今天我们要讲是angular2的http功能模块,这个功能模块的代码不在angular2里面,需要我们另外引入: index.html <script src="lib/htt ...
- 张高兴的 UWP 开发笔记:横向 ListView
ListView 默认的排列方向是纵向 ( Orientation="Vertical" ) ,但如果我们需要横向显示的 ListView 怎么办? Blend for Visua ...
- iOS之判断手机号码、邮箱格式是否正确
//判断手机号码格式是否正确 + (BOOL)valiMobile:(NSString *)mobile{ mobile = [mobile stringByReplacingOccurren ...
- java 字节流与字符流的区别
字节流与和字符流的使用非常相似,两者除了操作代码上的不同之外,是否还有其他的不同呢?实际上字节流在操作时本身不会用到缓冲区(内存),是文件本身直接操作的,而字符流在操作时使用了缓冲区,通过缓冲区再操作 ...
- Mysql - 增删改
因为项目原因, mysql用了两年了, 但是一直都未曾去总结过. 最近也是领导让总结项目, 才想起把mysql的使用小结一下. 一. Create 1. 单条插入, sql格式: insert int ...