一:编辑被键盘遮挡的问题

参考自: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, // 默认键盘:支持所有字符

  1. UIKeyboardTypeASCIICapable, // 支持ASCII的默认键盘
  2. UIKeyboardTypeNumbersAndPunctuation, // 标准电话键盘,支持+*#等符号
  3. UIKeyboardTypeURL, // URL键盘,有.com按钮;只支持URL字符
  4. UIKeyboardTypeNumberPad,  //纯数字键盘 (不带小数点)
  5. UIKeyboardTypeDecimalPad  //数字键盘 (带小数点)
  6. UIKeyboardTypePhonePad,   // 电话键盘
  7. UIKeyboardTypeNamePhonePad, // 电话键盘,也支持输入人名字
  8. UIKeyboardTypeEmailAddress, // 用于输入电子邮件地址的键盘
  9. UIKeyboardTypeWebSearch     //用于搜索
  10. 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小结的更多相关文章

  1. ios 浅谈一下UITextFiled UITextView 在tableview的cell上边展示

    最近在项目中.要做到在tableview的cell上边加一个输入框.允许用户输入. 1.我首先选的是在uitextView  然后在通知键盘出现的时候,将tableview的内容设置在键盘的上边.但是 ...

  2. ios学习开发阶段小结

    总结一下,开发了1个月10天的ios经验. 先晒成绩单:两个实验性质的app,一个wifi管家,一个图片壁纸软件 技术小结: 1.熟悉基本的各种ns语法:#import,#include,@class ...

  3. iOS开发-UITextView文字排版

    UITextView文本排版 1.配置NSMutableParagraphStyle NSMutableParagraphStyle *MParaStyle = [[NSMutableParagrap ...

  4. IOS开发,知识点小结,ios开发中经常使用的宏定义总结

    IOS开发,从应用跳转到用浏览器打开网页: [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http:// ...

  5. Unity3D在IOS上的优化小结

    http://www.58player.com/blog-635-122.html 最近一段時間一直在做Unity 在IOS設備上的資源優化,結合Unity的官方文檔以及自己遇到的實際問題,我把自己認 ...

  6. iOS——数据安全性问题小结

    在移动互联网快速发展的今天,iOS应用直接运行在用户的手机上,与运行在服务器后台服务相比,更有可能被黑客攻击. a.网络安全: 1.1 安全地传输用户密码 事先生成一对用于加密的公私钥,客户端登录的时 ...

  7. IOS开发之—— UITextView禁止Emoji输入

    UITextView代理方法:判断 -(void)textViewDidEndEditing:(UITextView *)textView{        if ([self stringContai ...

  8. iOS开发之UITextView,设置textView的行间距及placeholder

    一.设置textView的行间距 1.如果只是静态显示textView的内容为设置的行间距,执行如下代码: //    textview 改变字体的行间距     NSMutableParagraph ...

  9. iOS开发——设备信息小结(未完待续...)

    1.获取设备的信息  UIDevice *device = [[UIDevice alloc] init]; NSString *name = device.name;       //获取设备所有者 ...

随机推荐

  1. EntityFramework Core Raw SQL

    前言 本节我们来讲讲EF Core中的原始查询,目前在项目中对于简单的查询直接通过EF就可以解决,但是涉及到多表查询时为了一步到位就采用了原始查询的方式进行.下面我们一起来看看. EntityFram ...

  2. URL安全的Base64编码

    Base64编码可用于在HTTP环境下传递较长的标识信息.在其他应用程序中,也常常需要把二进制数据编码为适合放在URL(包括隐藏表单域)中的形式.此时,采用Base64编码不仅比较简短,同时也具有不可 ...

  3. 让 windows 下的命令行程序 cmd.exe 用起来更顺手

    在 Windows 下使用 Larave 框架做开发,从 Composer 到 artisan 总是避免不了和 cmd.exe 打交道,系统默认的命令行界面却是不怎么好看,且每行显示的字符数是做了限制 ...

  4. SQL Server-聚焦APPLY运算符(二十七)

    前言 其实有些新的特性在SQL Server早就已经出现过,但是若非系统的去学习数据库你会发现在实际项目中别人的SQL其实是比较复杂的,其实利用新的SQL Server语法会更加方便和简洁,从本节开始 ...

  5. html5 canvas常用api总结(二)--绘图API

    canvas可以绘制出很多奇妙的样式和美丽的效果,通过几个简单的api就可以在画布上呈现出千变万化的效果,还可以制作网页游戏,接下来就总结一下和绘图有关的API. 绘画的时候canvas相当于画布,而 ...

  6. windows环境redis主从安装部署

    准备工作 下载windows环境redis,我下载的是2.4.5,解压,拷贝一主(master)两从(slaveof).主机端口使用6379,两从的端口分别为6380和6381, 我本地索性用6379 ...

  7. MySQL 系列(二) 你不知道的数据库操作

    第一篇:MySQL 系列(一) 生产标准线上环境安装配置案例及棘手问题解决 第二篇:MySQL 系列(二) 你不知道的数据库操作 本章内容: 查看\创建\使用\删除 数据库 用户管理及授权实战 局域网 ...

  8. Ajax使用WCF实现小票pos机打印源码

    通过ajax跨域方式调用WCF服务,实现小票pos机的打印,源码提供web方式,客户端方式测试,服务驻留右侧底部任务栏,可控制服务开启暂停,用户可自定义小票打印模板,配合零售录入. qq  22945 ...

  9. GJM : C#设计模式(1)——单例模式

    感谢您的阅读.喜欢的.有用的就请大哥大嫂们高抬贵手"推荐一下"吧!你的精神支持是博主强大的写作动力以及转载收藏动力.欢迎转载! 版权声明:本文原创发表于 [请点击连接前往] ,未经 ...

  10. 借助 SIMD 数据布局模板和数据预处理提高 SIMD 在动画中的使用效率

    原文链接 简介 为发挥 SIMD1 的最大作用,除了对其进行矢量化处理2外,我们还需作出其他努力.可以尝试为循环添加 #pragma omp simd3,查看编译器是否成功进行矢量化,如果性能有所提升 ...